diff --git a/toolchain/check/handle_binding_pattern.cpp b/toolchain/check/handle_binding_pattern.cpp index 79bceb2488eb..cd0d5cb16c68 100644 --- a/toolchain/check/handle_binding_pattern.cpp +++ b/toolchain/check/handle_binding_pattern.cpp @@ -145,6 +145,10 @@ static auto HandleAnyBindingPatternType(Context& context, auto [node_id, original_inst_id] = context.node_stack().PopExprWithNodeId(); + // We are leaving the scope of the `.Self`; they should no longer be frozen in + // the binding's type. + original_inst_id = ThawPeriodSelf(context, original_inst_id); + if (node_kind == Parse::FormBindingPattern::Kind) { auto as_form = FormExprAsForm(context, node_id, original_inst_id); return {.node_id = node_id, diff --git a/toolchain/check/handle_where.cpp b/toolchain/check/handle_where.cpp index 4daca4d9ba66..8019cbad4627 100644 --- a/toolchain/check/handle_where.cpp +++ b/toolchain/check/handle_where.cpp @@ -92,7 +92,7 @@ auto HandleParseNode(Context& context, Parse::WhereOperandId node_id) -> bool { // Pass along all the constraints from the base facet type to be added to the // resulting facet type. context.args_type_info_stack().AddInstId( - AddInstInNoBlock( + AddInst( context, SemIR::LocId(node_id), {.base_type_inst_id = context.types().GetAsTypeInstId(self_id)})); @@ -102,17 +102,21 @@ auto HandleParseNode(Context& context, Parse::WhereOperandId node_id) -> bool { // Make rewrite constraints from the self facet type available immediately to // expressions in rewrite constraints for this `where` expression. + // + // Note that the where_stack rewrites need to be frozen. The rewrites in + // the base facet type will be thawed since their `WhereExpr` would have + // already been handled, so we need to freeze them again here. if (auto self_facet_type = context.types().TryGetAs( self_with_constraints_type_id)) { const auto& base_facet_type_info = context.facet_types().Get(self_facet_type->facet_type_id); for (const auto& rewrite : base_facet_type_info.rewrite_constraints) { if (rewrite.lhs_id != SemIR::ErrorInst::InstId) { - context.where_stack().back().rewrites.Insert( - context.constant_values().Get( - GetImplWitnessAccessWithoutSubstitution(context, - rewrite.lhs_id)), - rewrite.rhs_id); + auto const_id = context.constant_values().Get( + GetImplWitnessAccessWithoutSubstitution(context, rewrite.lhs_id)); + auto frozen_const_id = FreezePeriodSelf(context, const_id); + context.where_stack().back().rewrites.Insert(frozen_const_id, + rewrite.rhs_id); } } } @@ -208,15 +212,18 @@ auto HandleParseNode(Context& context, Parse::RequirementEqualId node_id) } // Build up the list of arguments for the `WhereExpr` inst. - context.args_type_info_stack().AddInstId( - AddInstInNoBlock( - context, node_id, {.lhs_id = lhs_id, .rhs_id = rhs_id})); + context.args_type_info_stack().AddInstId(AddInst( + context, node_id, {.lhs_id = lhs_id, .rhs_id = rhs_id})); if (lhs_id != SemIR::ErrorInst::InstId) { // Track the value of the rewrite so further constraints can use it // immediately, before they are evaluated. This happens directly where the // `ImplWitnessAccess` that refers to the rewrite constraint would have been // created, and the value of the constraint will be used instead. + // + // Note that the where_stack rewrites need to be frozen. Since this + // expression is inside of facet type construction, it will already be + // frozen. context.where_stack().back().rewrites.Insert( context.constant_values().Get( GetImplWitnessAccessWithoutSubstitution(context, lhs_id)), @@ -244,8 +251,8 @@ auto HandleParseNode(Context& context, Parse::RequirementEqualEqualId node_id) // Build up the list of arguments for the `WhereExpr` inst. context.args_type_info_stack().AddInstId( - AddInstInNoBlock( - context, node_id, {.lhs_id = lhs, .rhs_id = rhs})); + AddInst(context, node_id, + {.lhs_id = lhs, .rhs_id = rhs})); return true; } @@ -337,10 +344,9 @@ auto HandleParseNode(Context& context, Parse::RequirementImplsId node_id) // that `.T impls Hash`. // Build up the list of arguments for the `WhereExpr` inst. - context.args_type_info_stack().AddInstId( - AddInstInNoBlock( - context, node_id, - {.lhs_id = lhs_as_type.inst_id, .rhs_id = rhs_as_type.inst_id})); + context.args_type_info_stack().AddInstId(AddInst( + context, node_id, + {.lhs_id = lhs_as_type.inst_id, .rhs_id = rhs_as_type.inst_id})); if (lhs_as_type.type_id != SemIR::ErrorInst::TypeId && rhs_as_type.type_id != SemIR::ErrorInst::TypeId && @@ -356,16 +362,23 @@ auto HandleParseNode(Context& context, Parse::RequirementImplsId node_id) // Track any rewrites that are inherited from the impls constraint as the // LHS can be referring to `.Self` or a member of it, which makes those // rewrites modification of this facet type's self. + // + // Note that the where_stack rewrites need to be frozen. Since this + // expression is inside of facet type construction, it will already be + // frozen. + // + // TODO: Now that we don't allow nested `where`, there should be no rewrites + // to add here? if (IsPeriodSelfAccess(context, lhs_as_type.inst_id)) { auto facet_type = context.types().GetAs(rhs_as_type.type_id); const auto& facet_type_info = context.facet_types().Get(facet_type.facet_type_id); for (const auto& rewrite : facet_type_info.rewrite_constraints) { - auto lhs = SubstPeriodSelf( + auto lhs_id = SubstPeriodSelf( context, rhs_node, context.constant_values().Get(rewrite.lhs_id), context.constant_values().Get(lhs_as_type.inst_id)); - context.where_stack().back().rewrites.Insert(lhs, rewrite.rhs_id); + context.where_stack().back().rewrites.Insert(lhs_id, rewrite.rhs_id); } } } @@ -485,7 +498,7 @@ static auto CheckForNestedWhereInRequirementsAfterEval( found = diagnosed = true; } if (found) { - inst_id = AddInstInNoBlock( + inst_id = AddInst( context, SemIR::LocIdAndInst::RuntimeVerified( context.sem_ir(), SemIR::LocId(inst_id), req_inst)); } @@ -522,6 +535,25 @@ static auto CheckForNestedWhereInRequirementsAfterEval( return context.inst_blocks().Add(checked_requirements); } +static auto ThawPeriodSelfInRequirements(Context& context, + SemIR::InstBlockId requirements_id) + -> SemIR::InstBlockId { + bool changed = false; + llvm::SmallVector ids( + context.inst_blocks().Get(requirements_id)); + for (SemIR::InstId& inst_id : ids) { + auto subst_id = ThawPeriodSelf(context, inst_id); + if (subst_id != inst_id) { + changed = true; + inst_id = subst_id; + } + } + if (changed) { + return context.inst_blocks().Add(ids); + } + return requirements_id; +} + auto HandleParseNode(Context& context, Parse::WhereExprId node_id) -> bool { auto where_loc = context.where_stack().back().loc_id; context.where_stack().pop_back(); @@ -539,6 +571,7 @@ auto HandleParseNode(Context& context, Parse::WhereExprId node_id) -> bool { } requirements_id = CheckForNestedWhereInRequirementsAfterEval( context, where_loc, requirements_id); + requirements_id = ThawPeriodSelfInRequirements(context, requirements_id); AddInstAndPush( context, node_id, diff --git a/toolchain/check/impl_lookup.cpp b/toolchain/check/impl_lookup.cpp index 8a839ff00f4e..be64c163ff27 100644 --- a/toolchain/check/impl_lookup.cpp +++ b/toolchain/check/impl_lookup.cpp @@ -390,8 +390,7 @@ static auto CollectFacetWitnessSources( ++no_symbolic_final_lookups; auto identified_id = TryToIdentifyFacetType( context, loc_id, facet_const_id, - context.types().GetTypeInstId(type_id), allow_partially_identified, - /*subst_period_self=*/true); + context.types().GetTypeInstId(type_id), allow_partially_identified); --no_symbolic_final_lookups; if (identified_id.has_value()) { @@ -472,8 +471,7 @@ static auto CollectFacetWitnessSources( auto identified_id = TryToIdentifyFacetType( context, loc_id, canon_self_const_id, context.types().GetTypeInstIdForTypeConstantId(facet_type_const_id), - /*allow_partially_identified=*/true, - /*subst_period_self=*/false); + /*allow_partially_identified=*/true); if (identified_id.has_value()) { witnesses.push_back({.facet_const_id = canon_self_const_id, .identified_facet_type_id = identified_id}); diff --git a/toolchain/check/import_ref.cpp b/toolchain/check/import_ref.cpp index f1cd211998f5..b25229e92a19 100644 --- a/toolchain/check/import_ref.cpp +++ b/toolchain/check/import_ref.cpp @@ -726,8 +726,9 @@ static auto GetLocalNameId(ImportContext& context, SemIR::NameId import_name_id) // Returns the id for a local symbolic EntityName from an imported one, // preserving only the `NameId`, the `CompileTimeBindIndex`, and whether it is a -// template. Other parts of the EntityName are not kept and are not considered -// part of the canonical EntityName (even if they are present there). +// template, is marked unused, or a "frozen" `.Self`. Other parts of the +// EntityName are not kept and are not considered part of the canonical +// EntityName (even if they are present there). // // No new work is generated by calling this function. static auto GetLocalSymbolicEntityNameId( @@ -738,7 +739,8 @@ static auto GetLocalSymbolicEntityNameId( auto name_id = GetLocalNameId(context, import_entity_name.name_id); return context.local_entity_names().AddSymbolicBindingName( name_id, SemIR::NameScopeId::None, import_entity_name.bind_index(), - import_entity_name.is_template, import_entity_name.is_unused); + import_entity_name.is_template, import_entity_name.is_unused, + import_entity_name.is_frozen_period_self); } // Gets the local constant values corresponding to an imported inst block. diff --git a/toolchain/check/interface.cpp b/toolchain/check/interface.cpp index c5d85ecf2c85..2931474e72bf 100644 --- a/toolchain/check/interface.cpp +++ b/toolchain/check/interface.cpp @@ -140,7 +140,7 @@ auto AddSelfSymbolicBindingToScope(Context& context, auto entity_name_id = context.entity_names().AddSymbolicBindingName( SemIR::NameId::SelfType, scope_id, context.scope_stack().AddCompileTimeBinding(), is_template, - /*is_unused=*/false); + /*is_unused=*/false, /*is_frozen_period_self=*/false); // Because there is no equivalent non-symbolic value, we use `None` as // the `value_id` on the `SymbolicBinding`. auto self_param_inst_id = diff --git a/toolchain/check/member_access.cpp b/toolchain/check/member_access.cpp index 5680b8164827..70443af15841 100644 --- a/toolchain/check/member_access.cpp +++ b/toolchain/check/member_access.cpp @@ -19,6 +19,7 @@ #include "toolchain/check/inst.h" #include "toolchain/check/interface.h" #include "toolchain/check/name_lookup.h" +#include "toolchain/check/period_self.h" #include "toolchain/check/type.h" #include "toolchain/check/type_completion.h" #include "toolchain/diagnostics/emitter.h" diff --git a/toolchain/check/period_self.cpp b/toolchain/check/period_self.cpp index f5caf87e1825..9935d110270c 100644 --- a/toolchain/check/period_self.cpp +++ b/toolchain/check/period_self.cpp @@ -13,6 +13,8 @@ #include "toolchain/check/subst.h" #include "toolchain/check/type.h" #include "toolchain/check/type_completion.h" +#include "toolchain/sem_ir/inst.h" +#include "toolchain/sem_ir/inst_kind.h" #include "toolchain/sem_ir/typed_insts.h" namespace Carbon::Check { @@ -21,10 +23,10 @@ auto MakePeriodSelfFacetValue(Context& context, SemIR::LocId loc_id, SemIR::TypeId self_type_id) -> SemIR::InstId { CARBON_CHECK(self_type_id == SemIR::ErrorInst::TypeId || context.types().Is(self_type_id)); - auto entity_name_id = context.entity_names().AddCanonical({ - .name_id = SemIR::NameId::PeriodSelf, - .parent_scope_id = context.scope_stack().PeekNameScopeId(), - }); + auto entity_name_id = context.entity_names().AddCanonical( + {.name_id = SemIR::NameId::PeriodSelf, + .parent_scope_id = context.scope_stack().PeekNameScopeId(), + .is_frozen_period_self = true}); auto inst_id = AddInst( context, loc_id, { @@ -41,6 +43,31 @@ auto MakePeriodSelfFacetValue(Context& context, SemIR::LocId loc_id, return inst_id; } +struct GetAsResult { + SemIR::SymbolicBinding bind; + bool is_frozen; +}; + +static auto TryGetAsPeriodSelf(Context& context, SemIR::InstId inst_id, + bool canonicalize) + -> std::optional { + auto const_inst_id = context.constant_values().GetConstantInstId(inst_id); + if (!const_inst_id.has_value()) { + return std::nullopt; + } + auto query_inst_id = + canonicalize ? GetCanonicalFacetOrTypeValue(context, const_inst_id) + : inst_id; + if (auto bind = + context.insts().TryGetAs(query_inst_id)) { + const auto& entity_name = context.entity_names().Get(bind->entity_name_id); + if (entity_name.name_id == SemIR::NameId::PeriodSelf) { + return {{*bind, entity_name.is_frozen_period_self}}; + } + } + return std::nullopt; +} + class SubstPeriodSelfCallbacks : public SubstInstCallbacks { public: explicit SubstPeriodSelfCallbacks( @@ -102,14 +129,18 @@ class SubstPeriodSelfCallbacks : public SubstInstCallbacks { // Canonicalization not necessary; we are working with the constant // value already, and the query self in a witness is already // canonicalized. - if (IsPeriodSelf(context(), inst_id, - /*canonicalize=*/false)) { + if (auto period_self = TryGetAsPeriodSelf(context(), inst_id, + /*canonicalize=*/false)) { bool is_implicit_self_in_desigator = false; if (GetDesignatorState() == WitnessSelfNext) { is_implicit_self_in_desigator = true; designator_states_.back() = RebuildNext; } + if (period_self->is_frozen) { + return FullySubstituted; + } + switch (behaviour_) { case SubstPeriodSelfBehaviour::All: inst_id = GetReplacement(inst_id); @@ -474,19 +505,88 @@ auto SubstPeriodSelfInFacetType(Context& context, SemIR::LocId loc_id, auto IsPeriodSelf(Context& context, SemIR::InstId inst_id, bool canonicalize) -> bool { - auto const_inst_id = context.constant_values().GetConstantInstId(inst_id); - if (!const_inst_id.has_value()) { - return false; + return TryGetAsPeriodSelf(context, inst_id, canonicalize).has_value(); +} + +class FreezeAndThawCallbacks : public SubstInstCallbacks { + public: + explicit FreezeAndThawCallbacks(Context* context, bool match_frozen) + : SubstInstCallbacks(context), match_frozen_(match_frozen) {} + auto Subst(SemIR::InstId& inst_id) -> SubstResult override { + if (inst_id == SemIR::TypeType::TypeInstId || + inst_id == SemIR::ErrorInst::InstId) { + return FullySubstituted; + } + + if (auto found = cache_.Lookup(inst_id)) { + inst_id = found.value(); + return FullySubstituted; + } + + // No need to canonicalize, Subst will recurse to find it and we want to + // preserve structure. + if (auto period_self = + TryGetAsPeriodSelf(context(), inst_id, /*canonicalize=*/false)) { + auto entity_name = + context().entity_names().Get(period_self->bind.entity_name_id); + if (!!entity_name.is_frozen_period_self == match_frozen_) { + entity_name.is_frozen_period_self = !entity_name.is_frozen_period_self; + auto bind = period_self->bind; + bind.entity_name_id = + context().entity_names().AddCanonical(entity_name); + auto subst_id = Rebuild(inst_id, bind); + cache_.Insert(inst_id, subst_id); + inst_id = subst_id; + return FullySubstituted; + } + } + + return SubstOperands; } - auto query_inst_id = - canonicalize ? GetCanonicalFacetOrTypeValue(context, const_inst_id) - : inst_id; - if (auto bind = - context.insts().TryGetAs(query_inst_id)) { - const auto& entity_name = context.entity_names().Get(bind->entity_name_id); - return entity_name.name_id == SemIR::NameId::PeriodSelf; + + auto ReuseUnchanged(SemIR::InstId orig_inst_id) -> SemIR::InstId override { + cache_.Insert(orig_inst_id, orig_inst_id); + return orig_inst_id; } - return false; + + auto Rebuild(SemIR::InstId orig_inst_id, SemIR::Inst new_inst) + -> SemIR::InstId override { + auto inserted = cache_.Insert(orig_inst_id, [&] { + if (context().constant_values().GetConstantInstId(orig_inst_id) == + orig_inst_id) { + return RebuildNewInst(SemIR::LocId(orig_inst_id), new_inst); + } else { + return AddInst(context(), SemIR::LocIdAndInst::RuntimeVerified( + context().sem_ir(), + SemIR::LocId(orig_inst_id), new_inst)); + } + }); + return inserted.value(); + } + + private: + // If true, we are finding frozen `.Self` and thawing them. If false, then the + // inverse. + bool match_frozen_; + + // Track replacements that have been done, so that we avoid re-evaluating + // the same instructions repeatedly. Without this, a facet type can create a + // quadratic number of evaluations, as each one produces many more, + // repeatedly. + Map cache_; +}; + +auto ThawPeriodSelf(Context& context, SemIR::InstId inst_id) -> SemIR::InstId { + FreezeAndThawCallbacks callbacks(&context, /*match_frozen=*/true); + return SubstInst(context, inst_id, callbacks); +} + +auto FreezePeriodSelf(Context& context, SemIR::ConstantId const_id) + -> SemIR::ConstantId { + FreezeAndThawCallbacks callbacks(&context, /*match_frozen=*/false); + auto inst_id = SubstInst( + context, context.constant_values().GetInstId(const_id), callbacks); + return context.constant_values().Get(inst_id); } } // namespace Carbon::Check diff --git a/toolchain/check/period_self.h b/toolchain/check/period_self.h index db4c8f1392ff..4c5e11d959d4 100644 --- a/toolchain/check/period_self.h +++ b/toolchain/check/period_self.h @@ -85,6 +85,23 @@ auto SubstPeriodSelfInFacetType(Context& context, SemIR::LocId loc_id, auto IsPeriodSelf(Context& context, SemIR::InstId inst_id, bool canonicalize = true) -> bool; +// Find all `.Self` with their frozen flag set in the EntityName and replace +// them with a new `.Self` where the frozen flag is disabled. The frozen flag +// prevents substiting `.Self` while inside the construction of a facet type, +// and this frees them up to be replaced from outside the facet type, or allows +// to constant comparison with values from outside the facet type. +// +// This supports substitution in a canonical or non-canonical instruction. +auto ThawPeriodSelf(Context& context, SemIR::InstId inst_id) -> SemIR::InstId; + +// Find all `.Self` with their frozen flag unset in the EntityName and replace +// them with a new `.Self` where the frozen flag is enabled. The frozen flag +// prevents substiting `.Self` while inside the construction of a facet type, +// but this is used to enable comparison between the instructions and other +// frozen instructions inside the construction of a facet type. +auto FreezePeriodSelf(Context& context, SemIR::ConstantId const_id) + -> SemIR::ConstantId; + } // namespace Carbon::Check #endif // CARBON_TOOLCHAIN_CHECK_PERIOD_SELF_H_ diff --git a/toolchain/check/testdata/array/bound_values.carbon b/toolchain/check/testdata/array/bound_values.carbon index 10b4ef99d27c..9531a180d6e9 100644 --- a/toolchain/check/testdata/array/bound_values.carbon +++ b/toolchain/check/testdata/array/bound_values.carbon @@ -75,8 +75,8 @@ var b: array(1, 39999999999999999993); // CHECK:STDOUT: %AddWith.type.832: type = facet_type <@AddWith, @AddWith(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %AddWith.impl_witness: = impl_witness imports.%AddWith.impl_witness_table [concrete] // CHECK:STDOUT: %AddWith.facet: %AddWith.type.832 = facet_value Core.IntLiteral, (%AddWith.impl_witness) [concrete] -// CHECK:STDOUT: %AddWith.WithSelf.Op.type.24b: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(Core.IntLiteral, %AddWith.facet) [concrete] -// CHECK:STDOUT: %.0f2: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.24b, %AddWith.facet [concrete] +// CHECK:STDOUT: %AddWith.WithSelf.Op.type.af6: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(Core.IntLiteral, %AddWith.facet) [concrete] +// CHECK:STDOUT: %.eb6: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.af6, %AddWith.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.AddWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.AddWith.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.AddWith.impl.Op: %Core.IntLiteral.as.AddWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.AddWith.impl.Op.bound: = bound_method %int_1.5b8, %Core.IntLiteral.as.AddWith.impl.Op [concrete] @@ -87,7 +87,7 @@ var b: array(1, 39999999999999999993); // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.abd = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.9c3: %Core.IntLiteral.as.AddWith.impl.Op.type = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [concrete = constants.%Core.IntLiteral.as.AddWith.impl.Op] -// CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.9c3), @Core.IntLiteral.as.AddWith.impl.d4d [concrete] +// CHECK:STDOUT: %AddWith.impl_witness_table = impl_witness_table (%Core.import_ref.abd, %Core.import_ref.9c3), @Core.IntLiteral.as.AddWith.impl.83c [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -95,7 +95,7 @@ var b: array(1, 39999999999999999993); // CHECK:STDOUT: %i32.loc6: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem1: %.0f2 = impl_witness_access constants.%AddWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.AddWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.eb6 = impl_witness_access constants.%AddWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.AddWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.AddWith.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.AddWith.impl.Op.call: init Core.IntLiteral = call %bound_method(%int_1, %int_2) [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %.loc6_18.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.AddWith.impl.Op.call [concrete = constants.%int_3.1ba] diff --git a/toolchain/check/testdata/basics/raw_sem_ir/bundle.carbon b/toolchain/check/testdata/basics/raw_sem_ir/bundle.carbon index 62827b9bc295..32bd8d873b59 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/bundle.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/bundle.carbon @@ -34,7 +34,7 @@ fn F(Form:! Core.Form) ->? Form; // CHECK:STDOUT: name_scope0: {inst: instF, parent_scope: name_scope, has_error: false, extended_scopes: [], names: {name(Core): inst70000011, name0: inst70000030}} // CHECK:STDOUT: name_scope70000001: {inst: inst70000011, parent_scope: name_scope0, has_error: false, extended_scopes: [], names: {name1: inst70000016}} // CHECK:STDOUT: entity_names: -// CHECK:STDOUT: entity_name70000000: {name: name(PeriodSelf), parent_scope: name_scope, index: -1, is_template: 0, is_unused: 0, form: inst} +// CHECK:STDOUT: entity_name70000000: {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_name70000001: {name: name1, parent_scope: name_scope70000001, index: -1, is_template: 0, is_unused: 0, form: inst} // CHECK:STDOUT: entity_name70000002: {name: name1, parent_scope: name_scope, index: 0, is_template: 0, is_unused: 0, form: inst} // CHECK:STDOUT: functions: diff --git a/toolchain/check/testdata/basics/raw_sem_ir/non_core_interfaces.carbon b/toolchain/check/testdata/basics/raw_sem_ir/non_core_interfaces.carbon index 23a1f0314094..1056cbc61b3f 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/non_core_interfaces.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/non_core_interfaces.carbon @@ -220,7 +220,7 @@ fn UseLocalCopy[T:! Copy](_: T.T1, _: T.T2) {} // CHECK:STDOUT: name_scope50000005: {inst: inst50000028, parent_scope: name_scope50000004, has_error: false, extended_scopes: [], names: {name2: inst5000002A, name3: inst5000002B}} // CHECK:STDOUT: entity_names: // CHECK:STDOUT: entity_name50000000: {name: name(SelfType), parent_scope: name_scope50000002, index: 0, is_template: 0, is_unused: 0, form: inst} -// CHECK:STDOUT: entity_name50000001: {name: name(PeriodSelf), parent_scope: name_scope, index: -1, is_template: 0, is_unused: 0, form: inst} +// CHECK:STDOUT: entity_name50000001: {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_name50000002: {name: name6, parent_scope: name_scope50000001, index: -1, is_template: 0, is_unused: 0, form: inst} // CHECK:STDOUT: entity_name50000003: {name: name(SelfType), parent_scope: name_scope, index: 0, is_template: 0, is_unused: 0, form: inst} // CHECK:STDOUT: entity_name50000004: {name: name2, parent_scope: name_scope50000005, index: -1, is_template: 0, is_unused: 0, form: inst} 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 43ee6519d593..938405a8ffb1 100644 --- a/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon +++ b/toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon @@ -341,7 +341,7 @@ fn Foo[T:! type](p: T*) -> (T*, ()) { // 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: entity_names: -// CHECK:STDOUT: entity_name78000000: {name: name(PeriodSelf), parent_scope: name_scope, index: -1, is_template: 0, is_unused: 0, form: inst} +// 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} // CHECK:STDOUT: entity_name78000002: {name: name2, parent_scope: name_scope, index: -1, is_template: 0, is_unused: 0, form: inst} // CHECK:STDOUT: entity_name78000003: {name: name3, parent_scope: name_scope78000001, index: -1, is_template: 0, is_unused: 0, form: inst} diff --git a/toolchain/check/testdata/builtins/int/convert_float.carbon b/toolchain/check/testdata/builtins/int/convert_float.carbon index 45e1028eefda..f48cd54c4d62 100644 --- a/toolchain/check/testdata/builtins/int/convert_float.carbon +++ b/toolchain/check/testdata/builtins/int/convert_float.carbon @@ -116,8 +116,8 @@ let invalid: f64 = ConvertIntLiteralToFloatLiteral(-1) as f64; // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.802: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.765: type = fn_type_with_self_type %Negate.WithSelf.Op.type.802, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete] @@ -156,7 +156,7 @@ let invalid: f64 = ConvertIntLiteralToFloatLiteral(-1) as f64; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ConvertIntLiteralToFloatLiteral.ref: %ConvertIntLiteralToFloatLiteral.type = name_ref ConvertIntLiteralToFloatLiteral, imports.%Main.ConvertIntLiteralToFloatLiteral [concrete = constants.%ConvertIntLiteralToFloatLiteral] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %impl.elem1: %.765 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc9_52: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc9_52(%int_1) [concrete = constants.%int_-1] // CHECK:STDOUT: %.loc9_52.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-1] diff --git a/toolchain/check/testdata/choice/generic.carbon b/toolchain/check/testdata/choice/generic.carbon index 2d72ef25819f..4c786e411643 100644 --- a/toolchain/check/testdata/choice/generic.carbon +++ b/toolchain/check/testdata/choice/generic.carbon @@ -20,7 +20,7 @@ choice Always(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -42,7 +42,7 @@ choice Always(T:! type) { // CHECK:STDOUT: %T.patt.loc14_16.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_16.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_19.1: type = splice_block %.loc14_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_16.2: type = symbolic_binding T, 0 [symbolic = %T.loc14_16.1 (constants.%T)] diff --git a/toolchain/check/testdata/class/destroy_calls.carbon b/toolchain/check/testdata/class/destroy_calls.carbon index 2af1f8cf86f4..2aa2f0171172 100644 --- a/toolchain/check/testdata/class/destroy_calls.carbon +++ b/toolchain/check/testdata/class/destroy_calls.carbon @@ -445,7 +445,7 @@ fn G() { F({}); } // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T: type = symbolic_binding T, 0, template [template] @@ -488,7 +488,7 @@ fn G() { F({}); } // CHECK:STDOUT: %T.patt.loc6_16.1: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template = %T.patt.loc6_16.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_19.1: type = splice_block %.loc6_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_16.2: type = symbolic_binding T, 0, template [template = %T.loc6_16.1 (constants.%T)] diff --git a/toolchain/check/testdata/class/field/comp_time_field.carbon b/toolchain/check/testdata/class/field/comp_time_field.carbon index 462ec8c89903..42ccee7c9bda 100644 --- a/toolchain/check/testdata/class/field/comp_time_field.carbon +++ b/toolchain/check/testdata/class/field/comp_time_field.carbon @@ -59,7 +59,7 @@ var x: Class = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %Class: type = class_type @Class [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %A.patt: %pattern_type = value_binding_pattern A [concrete] // CHECK:STDOUT: %B.patt: %pattern_type = value_binding_pattern B [concrete] @@ -77,7 +77,7 @@ var x: Class = {}; // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %Class.ref.loc9: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %.loc9_11.1: type = splice_block %.loc9_11.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_11.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %A: type = wrapper_binding A, %Class.ref.loc9 @@ -86,7 +86,7 @@ var x: Class = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %Class.ref.loc15: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %.loc15_20.1: type = splice_block %.loc15_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %B: type = wrapper_binding B, %Class.ref.loc15 diff --git a/toolchain/check/testdata/class/generic/adapt.carbon b/toolchain/check/testdata/class/generic/adapt.carbon index 8a560ecda6fa..f49eedff347a 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -129,7 +129,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -201,7 +201,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_10.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_10.1 (constants.%T.67d)] @@ -472,7 +472,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -533,7 +533,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_10.1 (constants.%T)] @@ -629,7 +629,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -677,7 +677,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc7_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_13.1: type = splice_block %.loc7_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_10.1 (constants.%T)] @@ -892,7 +892,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -955,7 +955,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_16.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_19.1: type = splice_block %.loc4_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_16.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_16.1 (constants.%T.67d)] diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index 403ffdb3e634..7e9fa06c7a9f 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -93,7 +93,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -172,7 +172,7 @@ fn H() { // CHECK:STDOUT: %T.patt.loc4_18.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_21.1: type = splice_block %.loc4_21.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_21.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_18.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_18.1 (constants.%T.67d)] @@ -480,7 +480,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -517,7 +517,7 @@ fn H() { // CHECK:STDOUT: %T.patt.loc4_10.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_10.1 (constants.%T)] @@ -593,7 +593,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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: %U: type = symbolic_binding U, 0 [symbolic] @@ -666,7 +666,7 @@ fn H() { // CHECK:STDOUT: %U.patt.loc4_15.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc4_15.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_18.1: type = splice_block %.loc4_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc4_15.2: type = symbolic_binding U, 0 [symbolic = %U.loc4_15.1 (constants.%U)] @@ -675,7 +675,7 @@ fn H() { // CHECK:STDOUT: %T.patt.loc8_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_13.1: type = splice_block %.loc8_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_10.1 (constants.%T)] diff --git a/toolchain/check/testdata/class/generic/basic.carbon b/toolchain/check/testdata/class/generic/basic.carbon index 00a46b0b42b3..15bce7d210fa 100644 --- a/toolchain/check/testdata/class/generic/basic.carbon +++ b/toolchain/check/testdata/class/generic/basic.carbon @@ -35,7 +35,7 @@ class Declaration(T:! type); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.patt.fe6: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic] @@ -102,7 +102,7 @@ class Declaration(T:! type); // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.fe6)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -112,7 +112,7 @@ class Declaration(T:! type); // CHECK:STDOUT: %T.patt.loc17_20.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc17_20.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_23.1: type = splice_block %.loc17_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc17_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc17_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc17_20.1 (constants.%T.67d)] diff --git a/toolchain/check/testdata/class/generic/call.carbon b/toolchain/check/testdata/class/generic/call.carbon index 29416cd653be..6d19e2d6974a 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -94,7 +94,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -187,12 +187,12 @@ class Outer(T:! type) { // CHECK:STDOUT: %N.patt.loc4_24.1: %pattern_type.6b6 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_24.2 (constants.%N.patt.a76)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T.67d)] // CHECK:STDOUT: %.loc4_27: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self.loc4_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_24.2: %i32 = symbolic_binding N, 1 [symbolic = %N.loc4_24.1 (constants.%N.ce9)] @@ -308,7 +308,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -348,12 +348,12 @@ class Outer(T:! type) { // CHECK:STDOUT: %N.patt.loc4_24.1: %pattern_type.6b6 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_24.2 (constants.%N.patt.a76)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] // CHECK:STDOUT: %.loc4_27: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self.loc4_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_24.2: %i32 = symbolic_binding N, 1 [symbolic = %N.loc4_24.1 (constants.%N.ce9)] @@ -407,7 +407,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -449,12 +449,12 @@ class Outer(T:! type) { // CHECK:STDOUT: %N.patt.loc4_24.1: %pattern_type.6b6 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_24.2 (constants.%N.patt.a76)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] // CHECK:STDOUT: %.loc4_27: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self.loc4_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_24.2: %i32 = symbolic_binding N, 1 [symbolic = %N.loc4_24.1 (constants.%N.ce9)] @@ -510,7 +510,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -555,12 +555,12 @@ class Outer(T:! type) { // CHECK:STDOUT: %N.patt.loc4_24.1: %pattern_type.6b6 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_24.2 (constants.%N.patt.a76)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] // CHECK:STDOUT: %.loc4_27: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self.loc4_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_24.2: %i32 = symbolic_binding N, 1 [symbolic = %N.loc4_24.1 (constants.%N.ce9)] @@ -616,7 +616,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -694,7 +694,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt.loc2_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc2_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc2_17.1: type = splice_block %.loc2_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc2_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc2_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc2_14.1 (constants.%T)] @@ -714,7 +714,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %U.patt.loc3_16.1: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc3_16.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_19.1: type = splice_block %.loc3_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc3_16.2: type = symbolic_binding U, 1 [symbolic = %U.loc3_16.1 (constants.%U)] diff --git a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon index ec986fcfdba8..8ad34c7cff02 100644 --- a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon +++ b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon @@ -51,7 +51,7 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type.6c1: type = generic_class_type @Int.1 [concrete] // CHECK:STDOUT: %Int.generic: %Int.type.6c1 = struct_value () [concrete] @@ -154,7 +154,7 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %N.patt.loc6_10.1: %pattern_type.6b6 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_10.2 (constants.%N.patt.38a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc6_10.2: %i32 = symbolic_binding N, 0 [symbolic = %N.loc6_10.1 (constants.%N.37f)] diff --git a/toolchain/check/testdata/class/generic/field.carbon b/toolchain/check/testdata/class/generic/field.carbon index 04d859e9e370..eb7afca53733 100644 --- a/toolchain/check/testdata/class/generic/field.carbon +++ b/toolchain/check/testdata/class/generic/field.carbon @@ -37,7 +37,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -150,7 +150,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_14.1 (constants.%T.67d)] @@ -185,7 +185,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %.loc13_37.3: type = converted %T.ref.loc13_37, %T.as_type.loc13_37 [symbolic = %T.as_type.loc13_31.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc13_37.4: Core.Form = init_form %.loc13_37.3 [symbolic = %.loc13_37.2 (constants.%.1ce700.2)] // CHECK:STDOUT: %.loc13_14: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -214,7 +214,7 @@ fn H(U:! Core.Copy, c: Class(U)) -> U { // CHECK:STDOUT: %.loc17_37.3: type = converted %U.ref.loc17_37, %U.as_type.loc17_37 [symbolic = %U.as_type.loc17_31.1 (constants.%U.as_type.c1c)] // CHECK:STDOUT: %.loc17_37.4: Core.Form = init_form %.loc17_37.3 [symbolic = %.loc17_37.2 (constants.%.1ce700.3)] // CHECK:STDOUT: %.loc17_14: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/generic_vs_params.carbon b/toolchain/check/testdata/class/generic/generic_vs_params.carbon index cd41e3ab3154..f75253492ece 100644 --- a/toolchain/check/testdata/class/generic/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/generic/generic_vs_params.carbon @@ -88,7 +88,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %NotGenericButParams.generic: %NotGenericButParams.type = struct_value () [concrete] // CHECK:STDOUT: %NotGenericButParams: type = class_type @NotGenericButParams [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -153,7 +153,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %T.patt.loc6_25.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_25.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_28.1: type = splice_block %.loc6_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_25.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_25.1 (constants.%T)] @@ -162,7 +162,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %T.patt.loc8_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_13.1: type = splice_block %.loc8_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_10.1 (constants.%T)] @@ -272,7 +272,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %U.patt.loc10_27.1: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc10_27.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_30.1: type = splice_block %.loc10_30.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc10_30.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc10_27.2: type = symbolic_binding U, 1 [symbolic = %U.loc10_27.1 (constants.%U)] @@ -428,7 +428,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -446,7 +446,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %T.patt.loc11_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_10.1: type = splice_block %.loc11_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc11_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc11_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc11_7.1 (constants.%T)] @@ -503,7 +503,7 @@ class Foo[T:! type]; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -519,7 +519,7 @@ class Foo[T:! type]; // CHECK:STDOUT: %T.patt.loc8_12.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_12.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_15.1: type = splice_block %.loc8_15.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_15.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_12.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_12.1 (constants.%T)] diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index 988b0fe6a881..eb2c75173406 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -92,7 +92,7 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -165,7 +165,7 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] @@ -174,7 +174,7 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt.loc6_22.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_22.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_25.1: type = splice_block %.loc6_25.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_25.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_22.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_22.1 (constants.%T)] @@ -285,7 +285,7 @@ class Class(U:! type) { // 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: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [concrete] @@ -369,7 +369,7 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt.loc4: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.1 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4: type = symbolic_binding T, 0 [symbolic = %T.1 (constants.%T)] @@ -932,7 +932,7 @@ class Class(U:! type) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic] // CHECK:STDOUT: %Class.type.3256be.1: type = generic_class_type @Class.1 [concrete] @@ -970,7 +970,7 @@ class Class(U:! type) { // CHECK:STDOUT: %U.patt.loc12_14.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc12_14.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_17.1: type = splice_block %.loc12_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc12_14.2: type = symbolic_binding U, 0 [symbolic = %U.loc12_14.1 (constants.%U)] diff --git a/toolchain/check/testdata/class/generic/init.carbon b/toolchain/check/testdata/class/generic/init.carbon index d31740606012..5097a67bdb4d 100644 --- a/toolchain/check/testdata/class/generic/init.carbon +++ b/toolchain/check/testdata/class/generic/init.carbon @@ -53,7 +53,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -173,7 +173,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %.loc9_65.3: type = converted %T.ref.loc9_65, %T.as_type.loc9_65 [symbolic = %T.as_type.loc9_59.1 (constants.%T.as_type.74b)] // CHECK:STDOUT: %.loc9_65.4: Core.Form = init_form %.loc9_65.3 [symbolic = %.loc9_65.2 (constants.%.2b9)] // CHECK:STDOUT: %.loc9_40.1: type = splice_block %.loc9_40.3 [concrete = constants.%facet_type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Core.ref.loc9_30: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: %Core.ref.loc9_42: = name_ref Core, imports.%Core [concrete = imports.%Core] @@ -389,7 +389,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Adapt.type: type = generic_class_type @Adapt [concrete] // CHECK:STDOUT: %Adapt.generic: %Adapt.type = struct_value () [concrete] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] @@ -464,7 +464,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %.loc9_51.3: type = converted %T.ref.loc9_51, %T.as_type.loc9_51 [symbolic = %T.as_type.loc9_45.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc9_51.4: Core.Form = init_form %.loc9_51.3 [symbolic = %.loc9_51.2 (constants.%.1ce700.2)] // CHECK:STDOUT: %.loc9_35: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/member_inline.carbon b/toolchain/check/testdata/class/generic/member_inline.carbon index 2563f805c0d6..0c0ffcf97909 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -50,7 +50,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.patt.fe6: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic] @@ -99,7 +99,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.fe6)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -302,7 +302,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic] @@ -332,7 +332,7 @@ class C(T:! Core.Copy) { // CHECK:STDOUT: %T.patt.loc5_10.1: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/member_out_of_line.carbon b/toolchain/check/testdata/class/generic/member_out_of_line.carbon index 2c5d9adecc5f..aed951b27d3c 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -117,7 +117,7 @@ fn Generic(unused T:! ()).WrongType() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.patt.fe6: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic] @@ -166,7 +166,7 @@ fn Generic(unused T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.fe6)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -179,7 +179,7 @@ fn Generic(unused T:! ()).WrongType() {} // CHECK:STDOUT: %return.patt.loc11: @Class.F.%pattern_type (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc11, %.loc11_36.2 [symbolic = %return.patt.loc6 (constants.%return.patt.f44)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_18: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -205,7 +205,7 @@ fn Generic(unused T:! ()).WrongType() {} // CHECK:STDOUT: %return.patt.loc15: @Class.G.%pattern_type.loc7_17 (%pattern_type.2c66b4.2) = return_slot_pattern %return.param_patt.loc15, %.loc15_36.2 [symbolic = %return.patt.loc7 (constants.%return.patt.f44)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_18: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -420,7 +420,7 @@ fn Generic(unused T:! ()).WrongType() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -451,7 +451,7 @@ fn Generic(unused T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt.loc5_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_13.1: type = splice_block %.loc5_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_10.1 (constants.%T)] @@ -463,12 +463,12 @@ fn Generic(unused T:! ()).WrongType() {} // CHECK:STDOUT: %a.patt.loc11: @B.F.%pattern_type.loc7_17 (%pattern_type.51d) = at_binding_pattern a, %a.param_patt.loc11 [symbolic = %a.patt.loc7 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_10.1: type = splice_block %.loc11_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc11_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc11_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc11_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc11: type = symbolic_binding T, 0 [symbolic = @A.%T.loc5_10.1 (constants.%T)] // CHECK:STDOUT: %.loc11_22: type = splice_block %T.ref.loc11_22 [symbolic = @B.%T (constants.%T)] { -// CHECK:STDOUT: %.Self.loc11_19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc11_19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref.loc11_22: type = name_ref T, %T.loc11 [symbolic = @B.%T (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc11: @B.%T (%T) = symbolic_binding _, 1 [symbolic = @B.%_.loc6_12.1 (constants.%_)] @@ -497,7 +497,7 @@ fn Generic(unused T:! ()).WrongType() {} // CHECK:STDOUT: %_.patt.loc6_12.1: @B.%pattern_type (%pattern_type.51d) = symbolic_binding_pattern _, 1 [symbolic = %_.patt.loc6_12.2 (constants.%_.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %T.ref [symbolic = %T (constants.%T)] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref: type = name_ref T, @A.%T.loc5_10.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc6_12.2: @B.%T (%T) = symbolic_binding _, 1 [symbolic = %_.loc6_12.1 (constants.%_)] diff --git a/toolchain/check/testdata/class/generic/member_type.carbon b/toolchain/check/testdata/class/generic/member_type.carbon index 038cf8253113..caaff69413d1 100644 --- a/toolchain/check/testdata/class/generic/member_type.carbon +++ b/toolchain/check/testdata/class/generic/member_type.carbon @@ -61,7 +61,7 @@ fn Test() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.patt.fe6: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic] @@ -189,7 +189,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt.fe6)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -479,7 +479,7 @@ fn Test() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -599,7 +599,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] diff --git a/toolchain/check/testdata/class/generic/method_deduce.carbon b/toolchain/check/testdata/class/generic/method_deduce.carbon index bdedd81e29f6..359287cb2b32 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -42,7 +42,7 @@ fn CallMethodSelfDeduce(c: Class(A)) -> A { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -157,7 +157,7 @@ fn CallMethodSelfDeduce(c: Class(A)) -> A { // CHECK:STDOUT: %T.patt.loc18_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc18_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_17.1: type = splice_block %.loc18_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc18_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc18_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc18_14.1 (constants.%T)] @@ -264,7 +264,7 @@ fn CallMethodSelfDeduce(c: Class(A)) -> A { // CHECK:STDOUT: %.loc19_28.4: type = converted %.loc19_28.3, constants.%tuple.type.a5e [symbolic = %tuple.type (constants.%tuple.type.a5e)] // CHECK:STDOUT: %.loc19_28.5: Core.Form = init_form %.loc19_28.4 [symbolic = %.loc19_28.2 (constants.%.f18)] // CHECK:STDOUT: %.loc19_14.1: type = splice_block %.loc19_14.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc19_14.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc19_11.2: type = symbolic_binding U, 1 [symbolic = %U.loc19_11.1 (constants.%U)] @@ -287,7 +287,7 @@ fn CallMethodSelfDeduce(c: Class(A)) -> A { // CHECK:STDOUT: %T.ref.loc20_21: type = name_ref T, @Class.%T.loc18_14.2 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %x: @Class.GetNoDeduce.%T (%T) = wrapper_binding x, %x.param // CHECK:STDOUT: %.loc20_28.1: type = splice_block %.loc20_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc20_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc20_25.2: type = symbolic_binding U, 1 [symbolic = %U.loc20_25.1 (constants.%U)] @@ -304,7 +304,7 @@ fn CallMethodSelfDeduce(c: Class(A)) -> A { // CHECK:STDOUT: %U.ref.loc21_37: type = name_ref U, %U.loc21_9.2 [symbolic = %U.loc21_9.1 (constants.%U)] // CHECK:STDOUT: %.loc21_37.3: Core.Form = init_form %U.ref.loc21_37 [symbolic = %.loc21_37.2 (constants.%.822)] // CHECK:STDOUT: %.loc21_12.1: type = splice_block %.loc21_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc21_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc21_9.2: type = symbolic_binding U, 1 [symbolic = %U.loc21_9.1 (constants.%U)] diff --git a/toolchain/check/testdata/class/generic/redeclare.carbon b/toolchain/check/testdata/class/generic/redeclare.carbon index 76a3a39d87d6..0a6527c9a312 100644 --- a/toolchain/check/testdata/class/generic/redeclare.carbon +++ b/toolchain/check/testdata/class/generic/redeclare.carbon @@ -101,7 +101,7 @@ class E(U:! type) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -129,7 +129,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc6: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_19.1: type = splice_block %.loc4_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_16.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_16.1 (constants.%T)] @@ -138,7 +138,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc6: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_19.1: type = splice_block %.loc6_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6: type = symbolic_binding T, 0 [symbolic = %T.loc4_16.1 (constants.%T)] @@ -170,7 +170,7 @@ class E(U:! type) {} // CHECK:STDOUT: constants { // CHECK:STDOUT: %A.5a2: type = class_type @A.loc4 [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -199,7 +199,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc12_10.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_13.1: type = splice_block %.loc12_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc12_10.1 (constants.%T)] @@ -235,7 +235,7 @@ class E(U:! type) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.9ef: type = pattern_type %A [concrete] // CHECK:STDOUT: %N.patt.3a1: %pattern_type.9ef = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N.37f: %A = symbolic_binding N, 0 [symbolic] @@ -271,7 +271,7 @@ class E(U:! type) {} // CHECK:STDOUT: %N.patt.loc6_10.1: %pattern_type.9ef = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_10.2 (constants.%N.patt.3a1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %A.ref [concrete = constants.%A] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc6_10.2: %A = symbolic_binding N, 0 [symbolic = %N.loc6_10.1 (constants.%N.37f)] @@ -281,12 +281,12 @@ class E(U:! type) {} // CHECK:STDOUT: %N.patt.loc14_20.1: @B.loc14.%pattern_type (%pattern_type.51d) = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc14_20.2 (constants.%N.patt.9f0)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_13.1: type = splice_block %.loc14_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc14_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc14_10.1 (constants.%T)] // CHECK:STDOUT: %.loc14_23: type = splice_block %T.ref [symbolic = %T.loc14_10.1 (constants.%T)] { -// CHECK:STDOUT: %.Self.loc14_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_10.2 [symbolic = %T.loc14_10.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc14_20.2: @B.loc14.%T.loc14_10.1 (%T) = symbolic_binding N, 1 [symbolic = %N.loc14_20.1 (constants.%N.bd9)] @@ -346,7 +346,7 @@ class E(U:! type) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -379,7 +379,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc6_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_13.1: type = splice_block %.loc6_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_10.1 (constants.%T)] @@ -389,12 +389,12 @@ class E(U:! type) {} // CHECK:STDOUT: %U.patt.loc14_20.1: %pattern_type.9ef = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc14_20.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_13.1: type = splice_block %.loc14_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc14_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc14_10.1 (constants.%T)] // CHECK:STDOUT: %.loc14_23: type = splice_block %A.ref [concrete = constants.%A] { -// CHECK:STDOUT: %.Self.loc14_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc14_20.2: %A = symbolic_binding U, 1 [symbolic = %U.loc14_20.1 (constants.%U)] @@ -452,7 +452,7 @@ class E(U:! type) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -485,7 +485,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc6_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_10.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_13.1: type = splice_block %.loc6_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_10.1 (constants.%T.67d)] @@ -494,7 +494,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc14_10.1: %pattern_type.9ef = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_10.2 (constants.%T.patt.3a1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14: type = splice_block %A.ref [concrete = constants.%A] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_10.2: %A = symbolic_binding T, 0 [symbolic = %T.loc14_10.1 (constants.%T.37f)] @@ -545,7 +545,7 @@ class E(U:! type) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -577,7 +577,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.loc4_10.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_10.1 (constants.%T)] @@ -586,7 +586,7 @@ class E(U:! type) {} // CHECK:STDOUT: %U.patt.loc12_10.1: %pattern_type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc12_10.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_13.1: type = splice_block %.loc12_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc12_10.2: type = symbolic_binding U, 0 [symbolic = %U.loc12_10.1 (constants.%U)] diff --git a/toolchain/check/testdata/class/generic/self.carbon b/toolchain/check/testdata/class/generic/self.carbon index 4e9f22b27a2d..8b1785e515a9 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -28,7 +28,7 @@ class Class(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -85,7 +85,7 @@ class Class(T:! type) { // CHECK:STDOUT: %T.patt.loc15_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_17.1: type = splice_block %.loc15_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_14.1 (constants.%T)] diff --git a/toolchain/check/testdata/class/generic/stringify.carbon b/toolchain/check/testdata/class/generic/stringify.carbon index d47ac5cecadd..c66fcc2e3540 100644 --- a/toolchain/check/testdata/class/generic/stringify.carbon +++ b/toolchain/check/testdata/class/generic/stringify.carbon @@ -194,7 +194,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -265,7 +265,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T.67d)] @@ -317,7 +317,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %U.patt.loc5_16.1: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc5_16.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc5_16.2: type = symbolic_binding U, 1 [symbolic = %U.loc5_16.1 (constants.%U)] @@ -394,7 +394,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -456,7 +456,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %N.patt.loc4_10.1: %pattern_type.6b6 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_10.2 (constants.%N.patt.38a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_10.2: %i32 = symbolic_binding N, 0 [symbolic = %N.loc4_10.1 (constants.%N.37f)] @@ -530,7 +530,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %struct_type.a.b.b4c: type = struct_type {.a: %i32, .b: %i32} [concrete] // CHECK:STDOUT: %complete_type.7b9: = complete_type_witness %struct_type.a.b.b4c [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.d8d: type = pattern_type %D [concrete] // CHECK:STDOUT: %F.patt: %pattern_type.d8d = symbolic_binding_pattern F, 0 [symbolic] // CHECK:STDOUT: %F: %D = symbolic_binding F, 0 [symbolic] @@ -610,7 +610,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %F.patt.loc9_10.1: %pattern_type.d8d = symbolic_binding_pattern F, 0 [symbolic = %F.patt.loc9_10.2 (constants.%F.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9: type = splice_block %D.ref [concrete = constants.%D] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: } // CHECK:STDOUT: %F.loc9_10.2: %D = symbolic_binding F, 0 [symbolic = %F.loc9_10.1 (constants.%F)] diff --git a/toolchain/check/testdata/class/method/generic_method.carbon b/toolchain/check/testdata/class/method/generic_method.carbon index 5fb1a5630df9..9dad3de49eae 100644 --- a/toolchain/check/testdata/class/method/generic_method.carbon +++ b/toolchain/check/testdata/class/method/generic_method.carbon @@ -24,7 +24,7 @@ fn Class(T:! type).F(unused self, unused n: T) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -64,7 +64,7 @@ fn Class(T:! type).F(unused self, unused n: T) {} // CHECK:STDOUT: %T.patt.loc15_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_17.1: type = splice_block %.loc15_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_14.1 (constants.%T)] @@ -76,7 +76,7 @@ fn Class(T:! type).F(unused self, unused n: T) {} // CHECK:STDOUT: %n.patt.loc20: @Class.F.%pattern_type.loc17_15 (%pattern_type.51d) = at_binding_pattern n, %n.param_patt.loc20 [symbolic = %n.patt.loc17 (constants.%n.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_14.1: type = splice_block %.loc20_14.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc20_14.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20: type = symbolic_binding T, 0 [symbolic = @Class.%T.loc15_14.1 (constants.%T)] diff --git a/toolchain/check/testdata/class/syntactic_merge.carbon b/toolchain/check/testdata/class/syntactic_merge.carbon index 6e919ec67003..c10f52d15ba1 100644 --- a/toolchain/check/testdata/class/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/syntactic_merge.carbon @@ -198,7 +198,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -224,7 +224,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc8: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref.loc7 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_12.1 (constants.%a)] @@ -233,7 +233,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc8: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8: type = splice_block %C.ref.loc8 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc8: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc8: %C = symbolic_binding a, 0 [symbolic = %a.loc7_12.1 (constants.%a)] @@ -242,7 +242,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc11: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10: type = splice_block %D.ref.loc10 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc10_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc10_12.1 (constants.%a)] @@ -251,7 +251,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc11: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11: type = splice_block %D.ref.loc11 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc11: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc11: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc11: %C = symbolic_binding a, 0 [symbolic = %a.loc10_12.1 (constants.%a)] @@ -313,7 +313,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -332,7 +332,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc7: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %C.ref.loc6 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_19.2: %C = symbolic_binding a, 0 [symbolic = %a.loc6_19.1 (constants.%a)] @@ -341,7 +341,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc7: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref.loc7 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7: %C = symbolic_binding a, 0 [symbolic = %a.loc6_19.1 (constants.%a)] @@ -383,7 +383,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -404,7 +404,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc6_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc6_12.1 (constants.%a)] @@ -413,7 +413,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc14_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc14_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc14_12.1 (constants.%a)] @@ -467,7 +467,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -488,7 +488,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc6_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc6_12.1 (constants.%a)] @@ -497,7 +497,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc14_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc14_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc14_12.1 (constants.%a)] @@ -551,7 +551,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -575,7 +575,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc7_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_12.1 (constants.%a)] @@ -584,7 +584,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc8_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc8_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc8_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc8_12.1 (constants.%a)] @@ -627,7 +627,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -664,7 +664,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc4: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.1 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc4: %C = symbolic_binding a, 0 [symbolic = %a.1 (constants.%a)] @@ -673,7 +673,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc5: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.1 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc5: %C = symbolic_binding a, 0 [symbolic = %a.1 (constants.%a)] @@ -734,7 +734,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -760,7 +760,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc7_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_12.1 (constants.%a)] @@ -769,7 +769,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %b.patt.loc15_12.1: %pattern_type = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc15_12.2 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %b.loc15_12.2: %C = symbolic_binding b, 0 [symbolic = %b.loc15_12.1 (constants.%b)] @@ -823,7 +823,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -847,7 +847,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc7_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_12.1 (constants.%a)] @@ -856,7 +856,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc15_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc15_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc15_12.1 (constants.%a)] @@ -910,7 +910,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -934,7 +934,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc7_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_12.1 (constants.%a)] @@ -943,7 +943,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc15_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc15_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc15_12.1 (constants.%a)] @@ -997,7 +997,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -1015,7 +1015,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc6_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_12.2: %C = symbolic_binding a, 0 [symbolic = %a.loc6_12.1 (constants.%a)] @@ -1049,7 +1049,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -1079,7 +1079,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc6: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.1 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6: %C = symbolic_binding a, 0 [symbolic = %a.1 (constants.%a)] @@ -1120,7 +1120,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %const: type = const_type %C [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %const [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] @@ -1142,7 +1142,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc6_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %const [concrete = constants.%const] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %const: type = const_type %C.ref [concrete = constants.%const] // CHECK:STDOUT: } @@ -1152,7 +1152,7 @@ fn Base.F(ref self: Base) { // CHECK:STDOUT: %a.patt.loc18_12.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc18_12.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18: type = splice_block %const.loc18_15 [concrete = constants.%const] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %const.loc18_22: type = const_type %C.ref [concrete = constants.%const] // CHECK:STDOUT: %const.loc18_15: type = const_type %const.loc18_22 [concrete = constants.%const] diff --git a/toolchain/check/testdata/class/syntactic_merge_literal.carbon b/toolchain/check/testdata/class/syntactic_merge_literal.carbon index b70cc80c07a8..6c9cd827e3be 100644 --- a/toolchain/check/testdata/class/syntactic_merge_literal.carbon +++ b/toolchain/check/testdata/class/syntactic_merge_literal.carbon @@ -39,7 +39,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -102,7 +102,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %a.patt.loc4_10.1: %pattern_type.6b6 = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc4_10.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc4_10.2: %i32 = symbolic_binding a, 0 [symbolic = %a.loc4_10.1 (constants.%a)] @@ -111,7 +111,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %b.patt.loc6: %pattern_type.053 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_20.1: type = splice_block %C.loc5 [concrete = constants.%C.847] { -// CHECK:STDOUT: %.Self.loc5: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc5: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc5: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1000.loc5: Core.IntLiteral = int_value 1000 [concrete = constants.%int_1000.ff9] // CHECK:STDOUT: %impl.elem0.loc5: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -129,7 +129,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %b.patt.loc6: %pattern_type.053 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_20.1: type = splice_block %C.loc6 [concrete = constants.%C.847] { -// CHECK:STDOUT: %.Self.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc6: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1000.loc6: Core.IntLiteral = int_value 1000 [concrete = constants.%int_1000.ff9] // CHECK:STDOUT: %impl.elem0.loc6: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -194,7 +194,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -259,7 +259,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %a.patt.loc4_10.1: %pattern_type.6b6 = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc4_10.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc4_10.2: %i32 = symbolic_binding a, 0 [symbolic = %a.loc4_10.1 (constants.%a)] @@ -268,7 +268,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %b.patt.loc5_10.1: %pattern_type.053 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5_10.2 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_19.1: type = splice_block %C [concrete = constants.%C.847] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1000: Core.IntLiteral = int_value 1000 [concrete = constants.%int_1000.ff9] // CHECK:STDOUT: %impl.elem0: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -286,7 +286,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %b.patt.loc13_10.1: %pattern_type.053 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc13_10.2 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_20.1: type = splice_block %C [concrete = constants.%C.847] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] // CHECK:STDOUT: %int_1000: Core.IntLiteral = int_value 1000 [concrete = constants.%int_1000.ff9] // CHECK:STDOUT: %impl.elem0: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index 1bedcbd3f993..d64b0cd6d808 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -152,7 +152,7 @@ fn G() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -225,7 +225,7 @@ fn G() { // CHECK:STDOUT: %T.ref.loc6_35: type = name_ref T, %T.loc6_7.2 [symbolic = %T.loc6_7.1 (constants.%T)] // CHECK:STDOUT: %.loc6_35.3: Core.Form = init_form %T.ref.loc6_35 [symbolic = %.loc6_35.2 (constants.%.184)] // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -389,7 +389,7 @@ fn G() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] @@ -488,7 +488,7 @@ fn G() { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc6_53: Core.Form = init_form %i32 [concrete = constants.%.795] // CHECK:STDOUT: %.loc6_14: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } @@ -642,7 +642,7 @@ fn G() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -708,12 +708,12 @@ fn G() { // CHECK:STDOUT: %a.patt.loc6_45.1: @F.%pattern_type (%pattern_type.4d8) = at_binding_pattern a, %a.param_patt.loc6_45.1 [symbolic = %a.patt.loc6_45.2 (constants.%a.patt.3a9)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc6_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] // CHECK:STDOUT: %.loc6_24: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self.loc6_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } @@ -850,7 +850,7 @@ fn G() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -929,7 +929,7 @@ fn G() { // CHECK:STDOUT: %T.ref.loc6_35: type = name_ref T, %T.loc6_7.2 [symbolic = %T.loc6_7.1 (constants.%T)] // CHECK:STDOUT: %.loc6_35.3: Core.Form = init_form %T.ref.loc6_35 [symbolic = %.loc6_35.2 (constants.%.184347.1)] // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -1094,7 +1094,7 @@ fn G() { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] @@ -1197,7 +1197,7 @@ fn G() { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc7_53: Core.Form = init_form %i32 [concrete = constants.%.795] // CHECK:STDOUT: %.loc7_14: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } @@ -1359,7 +1359,7 @@ fn G() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -1465,7 +1465,7 @@ fn G() { // CHECK:STDOUT: %i32.loc6_41: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc6_41: Core.Form = init_form %i32.loc6_41 [concrete = constants.%.795] // CHECK:STDOUT: %.loc6_10: type = splice_block %i32.loc6_10 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc6_10: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc6_7.2: %i32 = symbolic_binding N, 0 [symbolic = %N.loc6_7.1 (constants.%N.37f)] @@ -1611,7 +1611,7 @@ fn G() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -1677,7 +1677,7 @@ fn G() { // CHECK:STDOUT: %a.patt.loc5_23.1: @F.%pattern_type (%pattern_type.f28) = at_binding_pattern a, %a.param_patt.loc5_23.1 [symbolic = %a.patt.loc5_23.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_10: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc5_7.2: %i32 = symbolic_binding N, 0 [symbolic = %N.loc5_7.1 (constants.%N.37f)] diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index ea13b8e195d1..5b44873ffc88 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -73,7 +73,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -128,7 +128,7 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_10.1 (constants.%T)] @@ -144,7 +144,7 @@ fn G() -> i32 { // CHECK:STDOUT: %T.ref.loc7_28: type = name_ref T, %T.loc7_7.2 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_28.3: Core.Form = init_form %T.ref.loc7_28 [symbolic = %.loc7_28.2 (constants.%.184)] // CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] @@ -297,7 +297,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -347,7 +347,7 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_10.1 (constants.%T)] @@ -363,7 +363,7 @@ fn G() -> i32 { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %.loc7_28.2: Core.Form = init_form %C.ref [concrete = constants.%.a44] // CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] @@ -501,7 +501,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -573,7 +573,7 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] @@ -594,12 +594,12 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc13_56.4: type = converted %.loc13_56.3, constants.%tuple.type.a5e [symbolic = %tuple.type (constants.%tuple.type.a5e)] // CHECK:STDOUT: %.loc13_56.5: Core.Form = init_form %.loc13_56.4 [symbolic = %.loc13_56.2 (constants.%.f18)] // CHECK:STDOUT: %.loc13_10.1: type = splice_block %.loc13_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc13_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc13_7.1 (constants.%T)] // CHECK:STDOUT: %.loc13_20.1: type = splice_block %.loc13_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc13_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc13_17.2: type = symbolic_binding U, 1 [symbolic = %U.loc13_17.1 (constants.%U)] @@ -657,7 +657,7 @@ fn G() -> i32 { // CHECK:STDOUT: %U.patt.loc5_16.1: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc5_16.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc5_16.2: type = symbolic_binding U, 1 [symbolic = %U.loc5_16.1 (constants.%U)] @@ -840,7 +840,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -942,7 +942,7 @@ fn G() -> i32 { // CHECK:STDOUT: %N.patt.loc4_20.1: %pattern_type.6b6 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_20.2 (constants.%N.patt.38a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_20.2: %i32 = symbolic_binding N, 0 [symbolic = %N.loc4_20.1 (constants.%N.37f)] @@ -957,7 +957,7 @@ fn G() -> i32 { // CHECK:STDOUT: %i32.loc6_44: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc6_44: Core.Form = init_form %i32.loc6_44 [concrete = constants.%.795] // CHECK:STDOUT: %.loc6_10: type = splice_block %i32.loc6_10 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc6_10: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc6_7.2: %i32 = symbolic_binding N, 0 [symbolic = %N.loc6_7.1 (constants.%N.37f)] diff --git a/toolchain/check/testdata/deduce/int_float.carbon b/toolchain/check/testdata/deduce/int_float.carbon index fb8b2c1ade50..6bbdd29ea13b 100644 --- a/toolchain/check/testdata/deduce/int_float.carbon +++ b/toolchain/check/testdata/deduce/int_float.carbon @@ -40,7 +40,7 @@ fn G(a: f64) -> Core.IntLiteral { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] @@ -112,7 +112,7 @@ fn G(a: f64) -> Core.IntLiteral { // CHECK:STDOUT: %IntLiteral.ref.loc4_57: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc4_57: Core.Form = init_form %IntLiteral.ref.loc4_57 [concrete = constants.%.f7d] // CHECK:STDOUT: %.loc4_14: type = splice_block %IntLiteral.ref.loc4_14 [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Core.ref.loc4_10: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref.loc4_14: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } @@ -206,7 +206,7 @@ fn G(a: f64) -> Core.IntLiteral { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] @@ -278,7 +278,7 @@ fn G(a: f64) -> Core.IntLiteral { // CHECK:STDOUT: %IntLiteral.ref.loc4_59: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: %.loc4_59: Core.Form = init_form %IntLiteral.ref.loc4_59 [concrete = constants.%.f7d] // CHECK:STDOUT: %.loc4_14: type = splice_block %IntLiteral.ref.loc4_14 [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Core.ref.loc4_10: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref.loc4_14: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index 41bba14b68f9..9023dfd9920f 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -65,7 +65,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -129,12 +129,12 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %U.ref.loc7_43: type = name_ref U, %U.loc7_17.2 [symbolic = %U.loc7_17.1 (constants.%U)] // CHECK:STDOUT: %.loc7_43.3: Core.Form = init_form %U.ref.loc7_43 [symbolic = %.loc7_43.2 (constants.%.822)] // CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_20.1: type = splice_block %.loc7_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc7_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_17.2: type = symbolic_binding U, 1 [symbolic = %U.loc7_17.1 (constants.%U)] @@ -274,7 +274,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -384,7 +384,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %Pair.patt.loc4_19.1: %pattern_type.394 = symbolic_binding_pattern Pair, 0 [symbolic = %Pair.patt.loc4_19.2 (constants.%Pair.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_31.1: type = splice_block %.loc4_31.3 [concrete = constants.%tuple.type.e55] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc4_23: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %i32.loc4_28: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc4_31.2: %tuple.type.24b = tuple_literal (%i32.loc4_23, %i32.loc4_28) [concrete = constants.%tuple.b59] @@ -403,12 +403,12 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %i32.loc6_54: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc6_54: Core.Form = init_form %i32.loc6_54 [concrete = constants.%.795] // CHECK:STDOUT: %.loc6_10: type = splice_block %i32.loc6_10 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self.loc6_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc6_10: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc6_7.2: %i32 = symbolic_binding A, 0 [symbolic = %A.loc6_7.1 (constants.%A)] // CHECK:STDOUT: %.loc6_19: type = splice_block %i32.loc6_19 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self.loc6_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc6_19: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %B.loc6_16.2: %i32 = symbolic_binding B, 1 [symbolic = %B.loc6_16.1 (constants.%B)] @@ -576,7 +576,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -633,7 +633,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %T.ref.loc7_33: type = name_ref T, %T.loc7_7.2 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_33.2: Core.Form = init_form %T.ref.loc7_33 [symbolic = %.loc7_33.1 (constants.%.184)] // CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] diff --git a/toolchain/check/testdata/deduce/type_operator.carbon b/toolchain/check/testdata/deduce/type_operator.carbon index cfec77fa8a44..3fef2c3ff2c9 100644 --- a/toolchain/check/testdata/deduce/type_operator.carbon +++ b/toolchain/check/testdata/deduce/type_operator.carbon @@ -74,7 +74,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -131,7 +131,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.ref.loc6_26: type = name_ref T, %T.loc6_7.2 [symbolic = %T.loc6_7.1 (constants.%T)] // CHECK:STDOUT: %.loc6_26.3: Core.Form = init_form %T.ref.loc6_26 [symbolic = %.loc6_26.2 (constants.%.184)] // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -256,7 +256,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -315,7 +315,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.ref.loc6_32: type = name_ref T, %T.loc6_7.2 [symbolic = %T.loc6_7.1 (constants.%T)] // CHECK:STDOUT: %.loc6_32.3: Core.Form = init_form %T.ref.loc6_32 [symbolic = %.loc6_32.2 (constants.%.184)] // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -445,7 +445,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -503,7 +503,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.ref.loc6_26: type = name_ref T, %T.loc6_7.2 [symbolic = %T.loc6_7.1 (constants.%T)] // CHECK:STDOUT: %.loc6_26.3: Core.Form = init_form %T.ref.loc6_26 [symbolic = %.loc6_26.2 (constants.%.184)] // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -630,7 +630,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -687,7 +687,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %T.ref.loc6_32: type = name_ref T, %T.loc6_7.2 [symbolic = %T.loc6_7.1 (constants.%T)] // CHECK:STDOUT: %.loc6_32.3: Core.Form = init_form %T.ref.loc6_32 [symbolic = %.loc6_32.2 (constants.%.184)] // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] diff --git a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon index 32b8fafd6bd3..d91ee5977531 100644 --- a/toolchain/check/testdata/deduce/value_with_type_through_access.carbon +++ b/toolchain/check/testdata/deduce/value_with_type_through_access.carbon @@ -103,7 +103,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %tuple.type: type = tuple_type (type) [concrete] // CHECK:STDOUT: %tuple.0d2: %tuple.type = tuple_value (type) [concrete] // CHECK:STDOUT: %pattern_type.f1e: type = pattern_type %tuple.type [concrete] @@ -175,7 +175,7 @@ fn G() { // CHECK:STDOUT: %T.patt.loc4_18.1: %pattern_type.f1e = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_28.1: type = splice_block %.loc4_28.3 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_22: type = type_literal type [concrete = type] // CHECK:STDOUT: %.loc4_28.2: %tuple.type = tuple_literal (%.loc4_22) [concrete = constants.%tuple.0d2] // CHECK:STDOUT: %.loc4_28.3: type = converted %.loc4_28.2, constants.%tuple.type [concrete = constants.%tuple.type] @@ -190,7 +190,7 @@ fn G() { // CHECK:STDOUT: %a.patt.loc8_52.1: @F.%pattern_type.loc8_52 (%pattern_type.e66) = at_binding_pattern a, %a.param_patt.loc8_52.1 [symbolic = %a.patt.loc8_52.2 (constants.%a.patt.803)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_17.1: type = splice_block %.loc8_17.3 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_11: type = type_literal type [concrete = type] // CHECK:STDOUT: %.loc8_17.2: %tuple.type = tuple_literal (%.loc8_11) [concrete = constants.%tuple.0d2] // CHECK:STDOUT: %.loc8_17.3: type = converted %.loc8_17.2, constants.%tuple.type [concrete = constants.%tuple.type] @@ -356,7 +356,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %struct_type.t: type = struct_type {.t: type} [concrete] // CHECK:STDOUT: %pattern_type.7f2: type = pattern_type %struct_type.t [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.7f2 = symbolic_binding_pattern T, 0 [symbolic] @@ -426,7 +426,7 @@ fn G() { // CHECK:STDOUT: %T.patt.loc4_18.1: %pattern_type.7f2 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_30: type = splice_block %struct_type.t [concrete = constants.%struct_type.t] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_26: type = type_literal type [concrete = type] // CHECK:STDOUT: %struct_type.t: type = struct_type {.t: type} [concrete = constants.%struct_type.t] // CHECK:STDOUT: } @@ -440,7 +440,7 @@ fn G() { // CHECK:STDOUT: %a.patt.loc8_54.1: @F.%pattern_type.loc8_54 (%pattern_type.92c) = at_binding_pattern a, %a.param_patt.loc8_54.1 [symbolic = %a.patt.loc8_54.2 (constants.%a.patt.92f)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_19: type = splice_block %struct_type.t [concrete = constants.%struct_type.t] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_15: type = type_literal type [concrete = type] // CHECK:STDOUT: %struct_type.t: type = struct_type {.t: type} [concrete = constants.%struct_type.t] // CHECK:STDOUT: } @@ -608,7 +608,7 @@ fn G() { // CHECK:STDOUT: %struct_type.t: type = struct_type {.t: type} [concrete] // CHECK:STDOUT: %complete_type.509: = complete_type_witness %struct_type.t [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.f15: type = pattern_type %Class [concrete] // CHECK:STDOUT: %T.patt.125: %pattern_type.f15 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.f25: %Class = symbolic_binding T, 0 [symbolic] @@ -685,7 +685,7 @@ fn G() { // CHECK:STDOUT: %T.patt.loc8_18.1: %pattern_type.f15 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_18.2 (constants.%T.patt.125)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8: type = splice_block %Class.ref [concrete = constants.%Class] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_18.2: %Class = symbolic_binding T, 0 [symbolic = %T.loc8_18.1 (constants.%T.f25)] @@ -698,7 +698,7 @@ fn G() { // CHECK:STDOUT: %a.patt: = at_binding_pattern a, %a.param_patt [concrete = ] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21_10: type = splice_block %Class.ref [concrete = constants.%Class] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc21_7.2: %Class = symbolic_binding T, 0 [symbolic = %T.loc21_7.1 (constants.%T.f25)] @@ -723,7 +723,7 @@ fn G() { // CHECK:STDOUT: %c.patt.loc25_7.1: %pattern_type.f15 = symbolic_binding_pattern c, 0 [symbolic = %c.patt.loc25_7.2 (constants.%c.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc25: type = splice_block %Class.ref [concrete = constants.%Class] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: } // CHECK:STDOUT: %c.loc25_7.2: %Class = symbolic_binding c, 0 [symbolic = %c.loc25_7.1 (constants.%c)] @@ -899,7 +899,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %array_type: type = array_type %int_1, type [concrete] // CHECK:STDOUT: %pattern_type.dcb: type = pattern_type %array_type [concrete] @@ -994,7 +994,7 @@ fn G() { // CHECK:STDOUT: %T.patt.loc4_18.1: %pattern_type.dcb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.4c7)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_34: type = splice_block %array_type [concrete = constants.%array_type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_27: type = type_literal type [concrete = type] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %array_type: type = array_type %int_1, %.loc4_27 [concrete = constants.%array_type] @@ -1009,7 +1009,7 @@ fn G() { // CHECK:STDOUT: %a.patt: = at_binding_pattern a, %a.param_patt [concrete = ] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_23: type = splice_block %array_type [concrete = constants.%array_type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_16: type = type_literal type [concrete = type] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] // CHECK:STDOUT: %array_type: type = array_type %int_1, %.loc12_16 [concrete = constants.%array_type] diff --git a/toolchain/check/testdata/facet/access.carbon b/toolchain/check/testdata/facet/access.carbon index fe03b387c7cf..c34f3c4f3f62 100644 --- a/toolchain/check/testdata/facet/access.carbon +++ b/toolchain/check/testdata/facet/access.carbon @@ -588,7 +588,7 @@ fn F(T:! Z where C impls NY(.Self)) -> C.(Y(T).Y1) { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%I.WithSelf.Copy.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] @@ -622,7 +622,7 @@ fn F(T:! Z where C impls NY(.Self)) -> C.(Y(T).Y1) { // CHECK:STDOUT: %.loc9_24.3: type = converted %T.ref.loc9_24, %T.as_type.loc9_24 [symbolic = %T.as_type.loc9_18.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc9_24.4: Core.Form = init_form %.loc9_24.3 [symbolic = %.loc9_24.2 (constants.%.0ce)] // CHECK:STDOUT: %.loc9_12: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_9.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc9_9.1 (constants.%T)] diff --git a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon index 08946c55a08a..2c5815f93a7b 100644 --- a/toolchain/check/testdata/facet/call_combined_impl_witness.carbon +++ b/toolchain/check/testdata/facet/call_combined_impl_witness.carbon @@ -81,7 +81,7 @@ fn F() { // CHECK:STDOUT: %B.WithSelf.BB.type.5c1: type = fn_type @B.WithSelf.BB, @B.WithSelf(%B.facet.464) [concrete] // CHECK:STDOUT: %B.WithSelf.BB.f03: %B.WithSelf.BB.type.5c1 = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %BitAndWith.type.a06: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.a06 = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.802: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] @@ -187,7 +187,7 @@ fn F() { // CHECK:STDOUT: %t.patt.loc33_26.1: @G.%pattern_type (%pattern_type.653) = at_binding_pattern t, %t.param_patt.loc33_26.1 [symbolic = %t.patt.loc33_26.2 (constants.%t.patt.ecc)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc33_20.1: type = splice_block %.loc33_20.3 [concrete = constants.%facet_type.22e] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref.loc33: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: %impl.elem0.loc33_12: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] 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 eb38146629ce..d361f65007c5 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 @@ -34,7 +34,7 @@ fn F() { // 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] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %Animal.type [concrete] // CHECK:STDOUT: %A.patt: %pattern_type = symbolic_binding_pattern A, 0 [symbolic] // CHECK:STDOUT: %A: %Animal.type = symbolic_binding A, 0 [symbolic] @@ -72,7 +72,7 @@ fn F() { // CHECK:STDOUT: %A.patt.loc20_23.1: %pattern_type = symbolic_binding_pattern A, 0 [symbolic = %A.patt.loc20_23.2 (constants.%A.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc20_23.2: %Animal.type = symbolic_binding A, 0 [symbolic = %A.loc20_23.1 (constants.%A)] 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 53916dbc6bae..ec22abc004b3 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 @@ -66,7 +66,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Scalar.patt: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic] // CHECK:STDOUT: %Scalar: type = symbolic_binding Scalar, 0 [symbolic] @@ -147,7 +147,7 @@ fn G() { // CHECK:STDOUT: %Scalar.patt.loc4_25.1: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic = %Scalar.patt.loc4_25.2 (constants.%Scalar.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_28.1: type = splice_block %.loc4_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %Scalar.loc4_25.2: type = symbolic_binding Scalar, 0 [symbolic = %Scalar.loc4_25.1 (constants.%Scalar)] @@ -165,12 +165,12 @@ fn G() { // CHECK:STDOUT: %U.patt.loc15_40.1: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc15_40.2 (constants.%U.patt.8a63c8.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_26.1: type = splice_block %.loc15_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc15_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc15_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_23.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_23.1 (constants.%T)] // CHECK:STDOUT: %.loc15_52: type = splice_block %Generic.type.loc15_52.2 [symbolic = %Generic.type.loc15_52.1 (constants.%Generic.type.ee14e9.2)] { -// CHECK:STDOUT: %.Self.loc15_40: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc15_40: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_23.2 [symbolic = %T.loc15_23.1 (constants.%T)] // CHECK:STDOUT: %Generic.type.loc15_52.2: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc15_52.1 (constants.%Generic.type.ee14e9.2)] @@ -183,12 +183,12 @@ fn G() { // CHECK:STDOUT: %U.patt.loc21_42.1: @PassThroughToGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc21_42.2 (constants.%U.patt.8a63c8.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21_35.1: type = splice_block %.loc21_35.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc21_32: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc21_32: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc21_35.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc21_32.2: type = symbolic_binding T, 0 [symbolic = %T.loc21_32.1 (constants.%T)] // CHECK:STDOUT: %.loc21_54: type = splice_block %Generic.type.loc21_54.2 [symbolic = %Generic.type.loc21_54.1 (constants.%Generic.type.ee14e9.2)] { -// CHECK:STDOUT: %.Self.loc21_42: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc21_42: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %T.ref.loc21: type = name_ref T, %T.loc21_32.2 [symbolic = %T.loc21_32.1 (constants.%T)] // CHECK:STDOUT: %Generic.type.loc21_54.2: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc21_54.1 (constants.%Generic.type.ee14e9.2)] @@ -451,7 +451,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Scalar.patt: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic] // CHECK:STDOUT: %Scalar: type = symbolic_binding Scalar, 0 [symbolic] @@ -532,7 +532,7 @@ fn G() { // CHECK:STDOUT: %Scalar.patt.loc4_25.1: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic = %Scalar.patt.loc4_25.2 (constants.%Scalar.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_28.1: type = splice_block %.loc4_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %Scalar.loc4_25.2: type = symbolic_binding Scalar, 0 [symbolic = %Scalar.loc4_25.1 (constants.%Scalar)] @@ -552,12 +552,12 @@ fn G() { // CHECK:STDOUT: %t.patt.loc15_63.1: @CallGenericMethod.%pattern_type.loc15_63 (%pattern_type.51d) = at_binding_pattern t, %t.param_patt.loc15_63.1 [symbolic = %t.patt.loc15_63.2 (constants.%t.patt.dcb)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_26.1: type = splice_block %.loc15_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc15_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc15_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_23.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_23.1 (constants.%T)] // CHECK:STDOUT: %.loc15_52: type = splice_block %Generic.type.loc15_52.2 [symbolic = %Generic.type.loc15_52.1 (constants.%Generic.type.ee14e9.2)] { -// CHECK:STDOUT: %.Self.loc15_40: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc15_40: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %T.ref.loc15_51: type = name_ref T, %T.loc15_23.2 [symbolic = %T.loc15_23.1 (constants.%T)] // CHECK:STDOUT: %Generic.type.loc15_52.2: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc15_52.1 (constants.%Generic.type.ee14e9.2)] 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 f4f3928e0ce2..cc60ae337043 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 @@ -29,7 +29,7 @@ fn F() { // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self.f00: %Animal.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.333: type = pattern_type %Animal.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.333 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %Animal.type = symbolic_binding T, 0 [symbolic] @@ -86,7 +86,7 @@ fn F() { // CHECK:STDOUT: %a.patt.loc17_35.1: @WalkAnimal.%pattern_type (%pattern_type.e90) = at_binding_pattern a, %a.param_patt.loc17_35.1 [symbolic = %a.patt.loc17_35.2 (constants.%a.patt.3e6)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_19: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc17_16.2: %Animal.type = symbolic_binding T, 0 [symbolic = %T.loc17_16.1 (constants.%T)] 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 e17212fd9d71..d7b5cd418837 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 @@ -98,7 +98,7 @@ fn B() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Scalar.patt: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic] // CHECK:STDOUT: %Scalar: type = symbolic_binding Scalar, 0 [symbolic] @@ -206,7 +206,7 @@ fn B() { // CHECK:STDOUT: %Scalar.patt.loc4_25.1: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic = %Scalar.patt.loc4_25.2 (constants.%Scalar.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_28.1: type = splice_block %.loc4_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %Scalar.loc4_25.2: type = symbolic_binding Scalar, 0 [symbolic = %Scalar.loc4_25.1 (constants.%Scalar)] @@ -228,12 +228,12 @@ fn B() { // CHECK:STDOUT: %s.patt.loc15_69.1: @CallGenericMethod.%pattern_type.loc15_69 (%pattern_type.51d) = at_binding_pattern s, %s.param_patt.loc15_69.1 [symbolic = %s.patt.loc15_69.2 (constants.%s.patt.a4f)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_26.1: type = splice_block %.loc15_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc15_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc15_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_23.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_23.1 (constants.%T)] // CHECK:STDOUT: %.loc15_45: type = splice_block %Generic.type.loc15_45.2 [symbolic = %Generic.type.loc15_45.1 (constants.%Generic.type.ee14e9.2)] { -// CHECK:STDOUT: %.Self.loc15_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc15_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %T.ref.loc15_44: type = name_ref T, %T.loc15_23.2 [symbolic = %T.loc15_23.1 (constants.%T)] // CHECK:STDOUT: %Generic.type.loc15_45.2: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc15_45.1 (constants.%Generic.type.ee14e9.2)] @@ -528,7 +528,7 @@ fn B() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %V.patt: %pattern_type.98f = symbolic_binding_pattern V, 0 [symbolic] // CHECK:STDOUT: %V: type = symbolic_binding V, 0 [symbolic] @@ -603,12 +603,12 @@ fn B() { // CHECK:STDOUT: %W.patt.loc3_24.1: %pattern_type.98f = symbolic_binding_pattern W, 1 [symbolic = %W.patt.loc3_24.2 (constants.%W.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_17.1: type = splice_block %.loc3_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc3_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc3_14.2: type = symbolic_binding V, 0 [symbolic = %V.loc3_14.1 (constants.%V)] // CHECK:STDOUT: %.loc3_27.1: type = splice_block %.loc3_27.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc3_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_27.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc3_24.2: type = symbolic_binding W, 1 [symbolic = %W.loc3_24.1 (constants.%W)] @@ -624,7 +624,7 @@ fn B() { // CHECK:STDOUT: %.loc7_36: type = converted %.loc7_35, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.type.loc7_36.1: type = facet_type <@I, @I(constants.%T.67d, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_36.2 (constants.%I.type.269)] // CHECK:STDOUT: %.loc7_18.1: type = splice_block %.loc7_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] @@ -635,7 +635,7 @@ fn B() { // CHECK:STDOUT: %t.patt.loc9_29.1: @A.%pattern_type (%pattern_type.d7b) = at_binding_pattern t, %t.param_patt.loc9_29.1 [symbolic = %t.patt.loc9_29.2 (constants.%t.patt.9d2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_18.1: type = splice_block %I.type [concrete = constants.%I.type.722] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %.loc9_13: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_17: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -841,7 +841,7 @@ fn B() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %V.patt: %pattern_type.98f = symbolic_binding_pattern V, 0 [symbolic] // CHECK:STDOUT: %V: type = symbolic_binding V, 0 [symbolic] @@ -902,12 +902,12 @@ fn B() { // CHECK:STDOUT: %W.patt.loc3_24.1: %pattern_type.98f = symbolic_binding_pattern W, 1 [symbolic = %W.patt.loc3_24.2 (constants.%W.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_17.1: type = splice_block %.loc3_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc3_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc3_14.2: type = symbolic_binding V, 0 [symbolic = %V.loc3_14.1 (constants.%V)] // CHECK:STDOUT: %.loc3_27.1: type = splice_block %.loc3_27.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc3_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_27.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc3_24.2: type = symbolic_binding W, 1 [symbolic = %W.loc3_24.1 (constants.%W)] @@ -923,7 +923,7 @@ fn B() { // CHECK:STDOUT: %.loc7_36: type = converted %.loc7_35, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.type.loc7_36.1: type = facet_type <@I, @I(constants.%T.67d, constants.%empty_tuple.type)> [symbolic = %I.type.loc7_36.2 (constants.%I.type.269)] // CHECK:STDOUT: %.loc7_18.1: type = splice_block %.loc7_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] @@ -934,7 +934,7 @@ fn B() { // CHECK:STDOUT: %t.patt.loc9_29.1: @A.%pattern_type (%pattern_type.67d) = at_binding_pattern t, %t.param_patt.loc9_29.1 [symbolic = %t.patt.loc9_29.2 (constants.%t.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_18.1: type = splice_block %I.type [concrete = constants.%I.type.6c0] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %.loc9_13: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_17: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] @@ -1102,7 +1102,7 @@ fn B() { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %V.patt: %pattern_type.98f = symbolic_binding_pattern V, 0 [symbolic] // CHECK:STDOUT: %V: type = symbolic_binding V, 0 [symbolic] @@ -1159,12 +1159,12 @@ fn B() { // CHECK:STDOUT: %W.patt.loc5_20.1: %pattern_type.98f = symbolic_binding_pattern W, 1 [symbolic = %W.patt.loc5_20.2 (constants.%W.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_13.1: type = splice_block %.loc5_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc5_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc5_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc5_10.2: type = symbolic_binding V, 0 [symbolic = %V.loc5_10.1 (constants.%V)] // CHECK:STDOUT: %.loc5_23.1: type = splice_block %.loc5_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc5_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc5_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc5_20.2: type = symbolic_binding W, 1 [symbolic = %W.loc5_20.1 (constants.%W)] @@ -1179,7 +1179,7 @@ fn B() { // CHECK:STDOUT: %C.loc7_31.1: type = class_type @C, @C(constants.%T.67d, constants.%empty_tuple.type) [symbolic = %C.loc7_31.2 (constants.%C.ab0)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.loc7_18.1: type = splice_block %.loc7_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T.67d)] @@ -1190,7 +1190,7 @@ fn B() { // CHECK:STDOUT: %t.patt.loc9_21.1: @A.%pattern_type (%pattern_type.b3a) = at_binding_pattern t, %t.param_patt.loc9_21.1 [symbolic = %t.patt.loc9_21.2 (constants.%t.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_10: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_7.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc9_7.1 (constants.%T.dda)] 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 0780aed25659..060a7b4494c9 100644 --- a/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon +++ b/toolchain/check/testdata/facet/convert_facet_value_to_itself.carbon @@ -31,7 +31,7 @@ fn F() { // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self: %Animal.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %Animal.type [concrete] // CHECK:STDOUT: %T.patt.e44e2f.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.443025.1: %Animal.type = symbolic_binding T, 0 [symbolic] @@ -76,7 +76,7 @@ fn F() { // CHECK:STDOUT: %T.patt.loc17_23.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc17_23.2 (constants.%T.patt.e44e2f.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc17_23.2: %Animal.type = symbolic_binding T, 0 [symbolic = %T.loc17_23.1 (constants.%T.443025.1)] @@ -85,7 +85,7 @@ fn F() { // CHECK:STDOUT: %T.patt.loc19_18.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_18.2 (constants.%T.patt.e44e2f.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19_18.2: %Animal.type = symbolic_binding T, 0 [symbolic = %T.loc19_18.1 (constants.%T.443025.2)] 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 447c03fa678d..8165a4b22b4f 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 @@ -97,7 +97,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self.f00: %Animal.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.880: type = pattern_type %Eats.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.880 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %Eats.type = symbolic_binding T, 0 [symbolic] @@ -165,7 +165,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %e.patt.loc6_27.1: @Feed.%pattern_type (%pattern_type.aed) = at_binding_pattern e, %e.param_patt.loc6_27.1 [symbolic = %e.patt.loc6_27.2 (constants.%e.patt.543)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_13: type = splice_block %Eats.ref [concrete = constants.%Eats.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_10.2: %Eats.type = symbolic_binding T, 0 [symbolic = %T.loc6_10.1 (constants.%T)] @@ -183,7 +183,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %a.patt.loc8_37.1: @HandleAnimal.%pattern_type (%pattern_type.c56) = at_binding_pattern a, %a.param_patt.loc8_37.1 [symbolic = %a.patt.loc8_37.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_28.1: type = splice_block %.loc8_28.3 [concrete = constants.%facet_type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // 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: %impl.elem0: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -326,7 +326,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %Tame.type: type = facet_type <@Tame> [concrete] // CHECK:STDOUT: %Self.0f0: %Tame.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %BitAndWith.type.a06: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.a06 = struct_value () [concrete] @@ -401,7 +401,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %v.patt.loc7_38.1: @FeedTame.%pattern_type (%pattern_type.7b2) = at_binding_pattern v, %v.param_patt.loc7_38.1 [symbolic = %v.patt.loc7_38.2 (constants.%v.patt.d6a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_22.1: type = splice_block %.loc7_22.3 [concrete = constants.%facet_type.bbb] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Tame.ref: type = name_ref Tame, file.%Tame.decl [concrete = constants.%Tame.type] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: %impl.elem0: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -425,7 +425,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %w.patt.loc9_48.1: @HandleTameAnimal.%pattern_type (%pattern_type.b23) = at_binding_pattern w, %w.param_patt.loc9_48.1 [symbolic = %w.patt.loc9_48.2 (constants.%w.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_39.1: type = splice_block %.loc9_39.3 [concrete = constants.%facet_type.dd5] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: %impl.elem0.loc9_30: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -592,7 +592,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %Tame.type: type = facet_type <@Tame> [concrete] // CHECK:STDOUT: %Self.0f0: %Tame.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.333: type = pattern_type %Animal.type [concrete] // CHECK:STDOUT: %A.patt: %pattern_type.333 = symbolic_binding_pattern A, 0 [symbolic] // CHECK:STDOUT: %A: %Animal.type = symbolic_binding A, 0 [symbolic] @@ -677,7 +677,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %.loc7_26: type = converted %A.ref, %A.as_type.loc7_26.1 [symbolic = %A.as_type.loc7_26.2 (constants.%A.as_type)] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: %.loc7_18: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc7_15.1: %Animal.type = symbolic_binding A, 0 [symbolic = %A.loc7_15.2 (constants.%A)] @@ -688,7 +688,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %v.patt.loc9_39.1: @FeedTame2.%pattern_type (%pattern_type.7b2) = at_binding_pattern v, %v.param_patt.loc9_39.1 [symbolic = %v.patt.loc9_39.2 (constants.%v.patt.d6a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_23.1: type = splice_block %.loc9_23.3 [concrete = constants.%facet_type.bbb] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Tame.ref: type = name_ref Tame, file.%Tame.decl [concrete = constants.%Tame.type] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: %impl.elem0: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -712,7 +712,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %w.patt.loc11_42.1: @HandleTameAnimal2.%pattern_type (%pattern_type.493) = at_binding_pattern w, %w.param_patt.loc11_42.1 [symbolic = %w.patt.loc11_42.2 (constants.%w.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_33.1: type = splice_block %.loc11_33.3 [concrete = constants.%facet_type.83c] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: %Tame.ref: type = name_ref Tame, file.%Tame.decl [concrete = constants.%Tame.type] // CHECK:STDOUT: %impl.elem0: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -910,7 +910,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self: %A.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %A.type = symbolic_binding T, 0 [symbolic] @@ -922,8 +922,10 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %TakesA: %TakesA.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.94f9a3.1: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.Self.dad: %A.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.dad [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.d4e: %A.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.d4e [symbolic_self] +// CHECK:STDOUT: %.Self: %A.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %U.patt: %pattern_type.029 = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U: %A.type = symbolic_binding U, 0 [symbolic] // CHECK:STDOUT: %U.as_type: type = facet_access_type %U [symbolic] @@ -960,7 +962,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %x.patt.loc7_26.1: @TakesA.%pattern_type (%pattern_type.a0e098.1) = at_binding_pattern x, %x.param_patt.loc7_26.1 [symbolic = %x.patt.loc7_26.2 (constants.%x.patt.19b9f1.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_15: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_12.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc7_12.1 (constants.%T)] @@ -978,16 +980,23 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %y.patt.loc9_50.1: @WithExtraWhere.%pattern_type (%pattern_type.a0e098.2) = at_binding_pattern y, %y.param_patt.loc9_50.1 [symbolic = %y.patt.loc9_50.2 (constants.%y.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_25.1: type = splice_block %.loc9_25.2 [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self.loc9_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc9_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %.Self.loc9_25: %A.type = symbolic_binding .Self [symbolic_self = constants.%.Self.dad] -// CHECK:STDOUT: %.Self.ref: %A.type = name_ref .Self, %.Self.loc9_25 [symbolic_self = constants.%.Self.dad] +// CHECK:STDOUT: %.Self.frozen.loc9_25: %A.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.d4e] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc9_31.1: %A.type = name_ref .Self, %.Self.frozen.loc9_25 [symbolic_self = constants.%.Self.frozen.d4e] // CHECK:STDOUT: %.loc9_43: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_31: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc9_31.1: type = facet_access_type %.Self.ref.loc9_31.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_31.1: type = converted %.Self.ref.loc9_31.1, %.Self.as_type.loc9_31.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc9_37.1 = requirement_impls %.loc9_31.1, %.loc9_43 [concrete] +// CHECK:STDOUT: %.Self: %A.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc9_31.2: %A.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc9_31.2: type = facet_access_type %.Self.ref.loc9_31.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc9_31.2: type = converted %.Self.ref.loc9_31.1, %.Self.as_type.loc9_31.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc9_37.2 = requirement_impls %.loc9_31.2, %.loc9_43 [concrete] // CHECK:STDOUT: %.loc9_25.2: type = where_expr [concrete = constants.%A.type] { -// CHECK:STDOUT: requirement_base_facet_type %A.ref -// CHECK:STDOUT: requirement_impls %.loc9_31, %.loc9_43 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.ref [concrete] +// CHECK:STDOUT: %impls.loc9_37.2 = requirement_impls %.loc9_31.2, %.loc9_43 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc9_20.2: %A.type = symbolic_binding U, 0 [symbolic = %U.loc9_20.1 (constants.%U)] @@ -1097,7 +1106,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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.67db0b.1: type = symbolic_binding T, 0 [symbolic] @@ -1108,6 +1117,8 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %TakesTypeDeduced: %TakesTypeDeduced.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.944: = require_complete_type %T.67db0b.1 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %pattern_type.9a5: type = pattern_type %type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.9a5 = symbolic_binding_pattern U, 0 [symbolic] @@ -1152,7 +1163,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %x.patt.loc3_39.1: @TakesTypeDeduced.%pattern_type (%pattern_type.51d) = at_binding_pattern x, %x.param_patt.loc3_39.1 [symbolic = %x.patt.loc3_39.2 (constants.%x.patt.800)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_25.1: type = splice_block %.loc3_25.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_25.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_22.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_22.1 (constants.%T.67db0b.1)] @@ -1166,16 +1177,23 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %y.patt.loc4_58.1: @CallsWithExtraWhere.%pattern_type (%pattern_type.86a) = at_binding_pattern y, %y.param_patt.loc4_58.1 [symbolic = %y.patt.loc4_58.2 (constants.%y.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_33.1: type = splice_block %.loc4_33.2 [concrete = constants.%type] { -// CHECK:STDOUT: %.Self.loc4_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_28: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.loc4_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self.loc4_33 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc4_28 [concrete] +// CHECK:STDOUT: %.Self.ref.loc4_39.1: %type = name_ref .Self, %.Self.frozen.loc4_33 [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_51: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc4_39: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc4_39.1: type = facet_access_type %.Self.ref.loc4_39.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc4_39.1: type = converted %.Self.ref.loc4_39.1, %.Self.as_type.loc4_39.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc4_45.1 = requirement_impls %.loc4_39.1, %.loc4_51 [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc4_39.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc4_39.2: type = facet_access_type %.Self.ref.loc4_39.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc4_39.2: type = converted %.Self.ref.loc4_39.1, %.Self.as_type.loc4_39.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc4_45.2 = requirement_impls %.loc4_39.2, %.loc4_51 [concrete] // CHECK:STDOUT: %.loc4_33.2: type = where_expr [concrete = constants.%type] { -// CHECK:STDOUT: requirement_base_facet_type %.loc4_28 -// CHECK:STDOUT: requirement_impls %.loc4_39, %.loc4_51 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc4_28 [concrete] +// CHECK:STDOUT: %impls.loc4_45.2 = requirement_impls %.loc4_39.2, %.loc4_51 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc4_25.2: %type = symbolic_binding U, 0 [symbolic = %U.loc4_25.1 (constants.%U)] @@ -1191,7 +1209,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %T.patt.loc8_30.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_30.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_33.1: type = splice_block %.loc8_33.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_33.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_30.3: type = symbolic_binding T, 0 [symbolic = %T.loc8_30.2 (constants.%T.67db0b.2)] @@ -1200,16 +1218,23 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %U.patt.loc9_33.1: %pattern_type.9a5 = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc9_33.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_41.1: type = splice_block %.loc9_41.2 [concrete = constants.%type] { -// CHECK:STDOUT: %.Self.loc9_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc9_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_36: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.loc9_41: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self.loc9_41 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc9_41: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc9_36 [concrete] +// CHECK:STDOUT: %.Self.ref.loc9_47.1: %type = name_ref .Self, %.Self.frozen.loc9_41 [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_59: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_47: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc9_47.1: type = facet_access_type %.Self.ref.loc9_47.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_47.1: type = converted %.Self.ref.loc9_47.1, %.Self.as_type.loc9_47.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc9_53.1 = requirement_impls %.loc9_47.1, %.loc9_59 [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc9_47.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc9_47.2: type = facet_access_type %.Self.ref.loc9_47.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc9_47.2: type = converted %.Self.ref.loc9_47.1, %.Self.as_type.loc9_47.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc9_53.2 = requirement_impls %.loc9_47.2, %.loc9_59 [concrete] // CHECK:STDOUT: %.loc9_41.2: type = where_expr [concrete = constants.%type] { -// CHECK:STDOUT: requirement_base_facet_type %.loc9_36 -// CHECK:STDOUT: requirement_impls %.loc9_47, %.loc9_59 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc9_36 [concrete] +// CHECK:STDOUT: %impls.loc9_53.2 = requirement_impls %.loc9_47.2, %.loc9_59 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc9_33.2: %type = symbolic_binding U, 0 [symbolic = %U.loc9_33.1 (constants.%U)] @@ -1346,6 +1371,8 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %pattern_type.9a5: type = pattern_type %type [concrete] @@ -1402,16 +1429,23 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %x.patt.loc3_68.1: @TakesExtraWhereDeduced.%pattern_type (%pattern_type.86a) = at_binding_pattern x, %x.param_patt.loc3_68.1 [symbolic = %x.patt.loc3_68.2 (constants.%x.patt.fe1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_36.1: type = splice_block %.loc3_36.2 [concrete = constants.%type] { -// CHECK:STDOUT: %.Self.loc3_28: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_28: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_31: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.loc3_36: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self.loc3_36 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_36: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc3_31 [concrete] +// CHECK:STDOUT: %.Self.ref.loc3_42.1: %type = name_ref .Self, %.Self.frozen.loc3_36 [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_54: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc3_42: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc3_42.1: type = facet_access_type %.Self.ref.loc3_42.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc3_42.1: type = converted %.Self.ref.loc3_42.1, %.Self.as_type.loc3_42.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc3_48.1 = requirement_impls %.loc3_42.1, %.loc3_54 [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc3_42.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc3_42.2: type = facet_access_type %.Self.ref.loc3_42.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc3_42.2: type = converted %.Self.ref.loc3_42.1, %.Self.as_type.loc3_42.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc3_48.2 = requirement_impls %.loc3_42.2, %.loc3_54 [concrete] // CHECK:STDOUT: %.loc3_36.2: type = where_expr [concrete = constants.%type] { -// CHECK:STDOUT: requirement_base_facet_type %.loc3_31 -// CHECK:STDOUT: requirement_impls %.loc3_42, %.loc3_54 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc3_31 [concrete] +// CHECK:STDOUT: %impls.loc3_48.2 = requirement_impls %.loc3_42.2, %.loc3_54 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_28.2: %type = symbolic_binding T, 0 [symbolic = %T.loc3_28.1 (constants.%T.f45530.1)] @@ -1429,7 +1463,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %y.patt.loc4_29.1: @CallsWithType.%pattern_type (%pattern_type.51d) = at_binding_pattern y, %y.param_patt.loc4_29.1 [symbolic = %y.patt.loc4_29.2 (constants.%y.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_22.1: type = splice_block %.loc4_22.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_22.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc4_19.2: type = symbolic_binding U, 0 [symbolic = %U.loc4_19.1 (constants.%U)] @@ -1441,16 +1475,23 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %T.patt.loc8_36.1: %pattern_type.9a5 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_36.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_44.1: type = splice_block %.loc8_44.2 [concrete = constants.%type] { -// CHECK:STDOUT: %.Self.loc8_36: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8_36: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_39: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.loc8_44: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self.loc8_44 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8_44: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc8_39 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_50.1: %type = name_ref .Self, %.Self.frozen.loc8_44 [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_62: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_50: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc8_50.1: type = facet_access_type %.Self.ref.loc8_50.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_50.1: type = converted %.Self.ref.loc8_50.1, %.Self.as_type.loc8_50.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc8_56.1 = requirement_impls %.loc8_50.1, %.loc8_62 [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc8_50.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc8_50.2: type = facet_access_type %.Self.ref.loc8_50.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc8_50.2: type = converted %.Self.ref.loc8_50.1, %.Self.as_type.loc8_50.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc8_56.2 = requirement_impls %.loc8_50.2, %.loc8_62 [concrete] // CHECK:STDOUT: %.loc8_44.2: type = where_expr [concrete = constants.%type] { -// CHECK:STDOUT: requirement_base_facet_type %.loc8_39 -// CHECK:STDOUT: requirement_impls %.loc8_50, %.loc8_62 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc8_39 [concrete] +// CHECK:STDOUT: %impls.loc8_56.2 = requirement_impls %.loc8_50.2, %.loc8_62 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_36.3: %type = symbolic_binding T, 0 [symbolic = %T.loc8_36.2 (constants.%T.f45530.2)] @@ -1459,7 +1500,7 @@ fn CallsWithTypeExplicit(U:! type) { // CHECK:STDOUT: %U.patt.loc9_27.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc9_27.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_30.1: type = splice_block %.loc9_30.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_30.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc9_27.2: type = symbolic_binding U, 0 [symbolic = %U.loc9_27.1 (constants.%U)] 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 066ade233be7..0e9e321d0672 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 @@ -29,7 +29,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self.f00: %Animal.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.333: type = pattern_type %Animal.type [concrete] // CHECK:STDOUT: %A.patt: %pattern_type.333 = symbolic_binding_pattern A, 0 [symbolic] // CHECK:STDOUT: %A: %Animal.type = symbolic_binding A, 0 [symbolic] @@ -91,7 +91,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %.loc18_26: type = converted %A.ref, %A.as_type.loc18_26.1 [symbolic = %A.as_type.loc18_26.2 (constants.%A.as_type)] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: %.loc18_18: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc18_15.1: %Animal.type = symbolic_binding A, 0 [symbolic = %A.loc18_15.2 (constants.%A)] @@ -102,7 +102,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %e.patt.loc20_27.1: @Feed.%pattern_type (%pattern_type.aed) = at_binding_pattern e, %e.param_patt.loc20_27.1 [symbolic = %e.patt.loc20_27.2 (constants.%e.patt.543)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_13: type = splice_block %Eats.ref [concrete = constants.%Eats.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20_10.2: %Eats.type = symbolic_binding T, 0 [symbolic = %T.loc20_10.1 (constants.%T.672)] @@ -120,7 +120,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %a.patt.loc22_30.1: @HandleAnimal.%pattern_type (%pattern_type.e90) = at_binding_pattern a, %a.param_patt.loc22_30.1 [symbolic = %a.patt.loc22_30.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc22_21: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc22_18.2: %Animal.type = symbolic_binding T, 0 [symbolic = %T.loc22_18.1 (constants.%T.443)] 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 49dfe58688a5..2e07b061f4b9 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 @@ -48,7 +48,7 @@ fn F() { // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self.f00: %Animal.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Food.patt.d47: %pattern_type.98f = symbolic_binding_pattern Food, 0 [symbolic] // CHECK:STDOUT: %Food.67d: type = symbolic_binding Food, 0 [symbolic] @@ -188,7 +188,7 @@ fn F() { // 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)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21_23.1: type = splice_block %.loc21_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc21_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %Food.loc21_20.2: type = symbolic_binding Food, 0 [symbolic = %Food.loc21_20.1 (constants.%Food.67d)] @@ -206,12 +206,12 @@ fn F() { // CHECK:STDOUT: %.loc26_49: type = converted %U.ref, %U.as_type.loc26_49.1 [symbolic = %U.as_type.loc26_49.2 (constants.%U.as_type)] // CHECK:STDOUT: %Eats.type.loc26_49.1: type = facet_type <@Eats, @Eats(constants.%U.as_type)> [symbolic = %Eats.type.loc26_49.2 (constants.%Eats.type.ceea62.1)] // CHECK:STDOUT: %.loc26_18: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self.loc26_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc26_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc26_15.1: %Animal.type = symbolic_binding T, 0 [symbolic = %T.loc26_15.2 (constants.%T.443)] // CHECK:STDOUT: %.loc26_30: type = splice_block %Edible.ref [concrete = constants.%Edible.type] { -// CHECK:STDOUT: %.Self.loc26_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc26_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Edible.ref: type = name_ref Edible, file.%Edible.decl [concrete = constants.%Edible.type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc26_27.1: %Edible.type = symbolic_binding U, 1 [symbolic = %U.loc26_27.2 (constants.%U)] @@ -230,12 +230,12 @@ fn F() { // CHECK:STDOUT: %food.patt.loc31_64.1: @Feed.%pattern_type.loc31_64 (%pattern_type.e40) = at_binding_pattern food, %food.param_patt.loc31_64.1 [symbolic = %food.patt.loc31_64.2 (constants.%food.patt.bcf)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc31_16: type = splice_block %Edible.ref [concrete = constants.%Edible.type] { -// CHECK:STDOUT: %.Self.loc31_13: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc31_13: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Edible.ref: type = name_ref Edible, file.%Edible.decl [concrete = constants.%Edible.type] // CHECK:STDOUT: } // CHECK:STDOUT: %Food.loc31_13.2: %Edible.type = symbolic_binding Food, 0 [symbolic = %Food.loc31_13.1 (constants.%Food.196)] // CHECK:STDOUT: %.loc31_37.1: type = splice_block %Eats.type.loc31_37.2 [symbolic = %Eats.type.loc31_37.1 (constants.%Eats.type.eb4)] { -// CHECK:STDOUT: %.Self.loc31_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc31_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Eats.ref: %Eats.type.8ef = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.generic] // CHECK:STDOUT: %Food.ref.loc31_33: %Edible.type = name_ref Food, %Food.loc31_13.2 [symbolic = %Food.loc31_13.1 (constants.%Food.196)] // CHECK:STDOUT: %Food.as_type.loc31_37.2: type = facet_access_type %Food.ref.loc31_33 [symbolic = %Food.as_type.loc31_37.1 (constants.%Food.as_type.bca)] @@ -267,12 +267,12 @@ fn F() { // CHECK:STDOUT: %food.patt.loc32_54.1: @HandleAnimal.%pattern_type.loc32_54 (%pattern_type.ea8) = at_binding_pattern food, %food.param_patt.loc32_54.1 [symbolic = %food.patt.loc32_54.2 (constants.%food.patt.09a8ec.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc32_21: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self.loc32_18: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc32_18: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc32_18.2: %Animal.type = symbolic_binding A, 0 [symbolic = %A.loc32_18.1 (constants.%A)] // CHECK:STDOUT: %.loc32_36: type = splice_block %Edible.ref [concrete = constants.%Edible.type] { -// CHECK:STDOUT: %.Self.loc32_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc32_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Edible.ref: type = name_ref Edible, file.%Edible.decl [concrete = constants.%Edible.type] // CHECK:STDOUT: } // CHECK:STDOUT: %Food.loc32_33.2: %Edible.type = symbolic_binding Food, 1 [symbolic = %Food.loc32_33.1 (constants.%Food.5f8)] 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 813427e52a65..10e3deedf2f5 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 @@ -31,7 +31,7 @@ fn F() { // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self.f00: %Animal.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.333: type = pattern_type %Animal.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.333 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %Animal.type = symbolic_binding T, 0 [symbolic] @@ -95,7 +95,7 @@ fn F() { // CHECK:STDOUT: %a.patt.loc17_35.1: @FeedAnimal.%pattern_type (%pattern_type.e90) = at_binding_pattern a, %a.param_patt.loc17_35.1 [symbolic = %a.patt.loc17_35.2 (constants.%a.patt.3e60af.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_19: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc17_16.2: %Animal.type = symbolic_binding T, 0 [symbolic = %T.loc17_16.1 (constants.%T)] @@ -113,7 +113,7 @@ fn F() { // CHECK:STDOUT: %a.patt.loc19_30.1: @HandleAnimal.%pattern_type (%pattern_type.e90) = at_binding_pattern a, %a.param_patt.loc19_30.1 [symbolic = %a.patt.loc19_30.2 (constants.%a.patt.3e60af.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19_21: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19_18.2: %Animal.type = symbolic_binding T, 0 [symbolic = %T.loc19_18.1 (constants.%T)] diff --git a/toolchain/check/testdata/facet/early_impls.carbon b/toolchain/check/testdata/facet/early_impls.carbon index 5b661a7618a4..78fef24d43ac 100644 --- a/toolchain/check/testdata/facet/early_impls.carbon +++ b/toolchain/check/testdata/facet/early_impls.carbon @@ -224,6 +224,58 @@ constraint NY { // `C(.Self)` is used as the implied `.Self` in `.Y1 impls X`. fn F(unused V:! Z where C(.Self) impls NY and .Z1 = D(C(.Self).(Y.Y1))) {} +// --- early_impls_with_period_self_not_replaced.carbon +library "[[@TEST_NAME]]"; + +interface Z(T:! type) {} +class C; + +class NeedZ(V:! Z(.Self)); +class NeedZU(U:! type, V:! Z(U)); + +interface S(T:! type); + +// The conversion `C as Z(.Self)` written explicitly, where the `.Self` refers +// to `T` and thus must not be replaced. It is not `C as Z(C)`. +fn F1(unused T:! type where C impls Z(.Self) and (C as Z(.Self)) impls S(.Self)) {} + +// NeedZU contains a `C as Z(.Self)` conversion and identify step, but the +// `.Self` has been smuggled out of the facet type being constructed and placed +// into a new facet type, which is the type of the `V` parameter. The `.Self` +// refers to `T` and we need to keep track of that so it is not replaced during +// the conversion. +fn F2(unused T:! type where C impls Z(.Self) and NeedZU(.Self, C) impls S(.Self)) {} + +// NeedZ contains a `C as Z(.Self)` conversion but the `.Self` refers to the `V` +// parameter which is being replaced by `C`, so it's `C as Z(C)`. The `.Self` +// there should be replaced during the conversion. +impl C as Z(C) {} +fn F3(unused T:! type where C impls Z(.Self) and NeedZ(C) impls S(.Self)) {} + +// --- fail_early_impls_with_period_self_replaced.carbon +library "[[@TEST_NAME]]"; + +interface Z(T:! type) {} +class C; + +class NeedZ(V:! Z(.Self)); + +interface S(T:! type); + +// NeedZ contains a `C as Z(.Self)` conversion but the `.Self` refers to the `V` +// parameter which is being replaced by `C`, so it's `C as Z(C)`. The `.Self` +// there should be replaced during the conversion. We show that it was replaced +// because the `C impls Z(.Self)` constraint does not satisfy `C as Z(C)` so the +// conversion fails. +// CHECK:STDERR: fail_early_impls_with_period_self_replaced.carbon:[[@LINE+7]]:49: error: cannot convert type `C` into type implementing `Z(.Self)` [ConversionFailureTypeToFacet] +// CHECK:STDERR: fn F(unused T:! type where C impls Z(.Self) and NeedZ(C) impls S(.Self)) {} +// CHECK:STDERR: ^~~~~~~~ +// CHECK:STDERR: fail_early_impls_with_period_self_replaced.carbon:[[@LINE-12]]:1: note: while deducing parameters of generic declared here [DeductionGenericHere] +// CHECK:STDERR: class NeedZ(V:! Z(.Self)); +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +fn F(unused T:! type where C impls Z(.Self) and NeedZ(C) impls S(.Self)) {} + // --- period_self_impls_named_constraint_used_in_later_constraint.carbon library "[[@TEST_NAME]]"; diff --git a/toolchain/check/testdata/facet/facet_assoc_const.carbon b/toolchain/check/testdata/facet/facet_assoc_const.carbon index 9dee1dfd05ed..8f6e5713ec2d 100644 --- a/toolchain/check/testdata/facet/facet_assoc_const.carbon +++ b/toolchain/check/testdata/facet/facet_assoc_const.carbon @@ -40,7 +40,7 @@ library "[[@TEST_NAME]]"; interface L { let W:! type; let X:! type; } -// CHECK:STDERR: fail_two_different_first_associated.carbon:[[@LINE+4]]:17: error: associated constant `.(L.W)` given two different values `.(L.X)` and `()` [AssociatedConstantWithDifferentValues] +// CHECK:STDERR: fail_two_different_first_associated.carbon:[[@LINE+4]]:17: error: associated constant `.(L.W)` given two different values `()` and `.(L.X)` [AssociatedConstantWithDifferentValues] // CHECK:STDERR: fn F(unused T:! L where .W = .X and .W = ()) {} // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~ // CHECK:STDERR: @@ -648,15 +648,20 @@ fn F(unused T:! I & J where .I1 = .J1.I2) {} // CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.WithSelf.%Y [concrete] // CHECK:STDOUT: %assoc2: %M.assoc_type = assoc_entity element2, @M.WithSelf.%Z [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.807: %M.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.807 [symbolic_self] -// CHECK:STDOUT: %M.lookup_impl_witness: = lookup_impl_witness %.Self.807, @M [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %M.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %M.lookup_impl_witness, element1 [symbolic_self] -// CHECK:STDOUT: %impl.elem2: type = impl_witness_access %M.lookup_impl_witness, element2 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.1cb: %M.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.1cb [symbolic_self] +// CHECK:STDOUT: %M.lookup_impl_witness.beb: = lookup_impl_witness %.Self.frozen.1cb, @M [symbolic_self] +// CHECK:STDOUT: %impl.elem0.352: type = impl_witness_access %M.lookup_impl_witness.beb, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.66c: type = impl_witness_access %M.lookup_impl_witness.beb, element1 [symbolic_self] +// CHECK:STDOUT: %impl.elem2.c22: type = impl_witness_access %M.lookup_impl_witness.beb, element2 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.Self: %M.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %M.lookup_impl_witness.e09: = lookup_impl_witness %.Self, @M [symbolic_self] +// CHECK:STDOUT: %impl.elem0.c24: type = impl_witness_access %M.lookup_impl_witness.e09, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.e3e: type = impl_witness_access %M.lookup_impl_witness.e09, element1 [symbolic_self] +// CHECK:STDOUT: %impl.elem2.017: type = impl_witness_access %M.lookup_impl_witness.e09, element2 [symbolic_self] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -666,42 +671,56 @@ fn F(unused T:! I & J where .I1 = .J1.I2) {} // CHECK:STDOUT: %T.patt: = symbolic_binding_pattern T, 0 [concrete = ] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_19.1: type = splice_block %.loc13_19.2 [concrete = ] { -// CHECK:STDOUT: %.Self.loc13_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc13_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] -// CHECK:STDOUT: %.Self.loc13_19: %M.type = symbolic_binding .Self [symbolic_self = constants.%.Self.807] -// CHECK:STDOUT: %.Self.ref.loc13_25: %M.type = name_ref .Self, %.Self.loc13_19 [symbolic_self = constants.%.Self.807] -// CHECK:STDOUT: %.Self.as_type.loc13_25: type = facet_access_type %.Self.ref.loc13_25 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_25: type = converted %.Self.ref.loc13_25, %.Self.as_type.loc13_25 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc13_19: %M.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.1cb] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %M.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_25: %M.type = name_ref .Self, %.Self.frozen.loc13_19 [symbolic_self = constants.%.Self.frozen.1cb] +// CHECK:STDOUT: %.Self.as_type.loc13_25: type = facet_access_type %.Self.ref.loc13_25 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_25: type = converted %.Self.ref.loc13_25, %.Self.as_type.loc13_25 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc13_25: %M.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc13_25: type = impl_witness_access constants.%M.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.Self.ref.loc13_30: %M.type = name_ref .Self, %.Self.loc13_19 [symbolic_self = constants.%.Self.807] -// CHECK:STDOUT: %.Self.as_type.loc13_30: type = facet_access_type %.Self.ref.loc13_30 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_30: type = converted %.Self.ref.loc13_30, %.Self.as_type.loc13_30 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impl.elem0.loc13_25.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element0 [symbolic_self = constants.%impl.elem0.352] +// CHECK:STDOUT: %.Self.ref.loc13_30: %M.type = name_ref .Self, %.Self.frozen.loc13_19 [symbolic_self = constants.%.Self.frozen.1cb] +// CHECK:STDOUT: %.Self.as_type.loc13_30: type = facet_access_type %.Self.ref.loc13_30 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_30: type = converted %.Self.ref.loc13_30, %.Self.as_type.loc13_30 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y.ref.loc13_30: %M.assoc_type = name_ref Y, @Y.%assoc1 [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1.loc13_30: type = impl_witness_access constants.%M.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %.Self.ref.loc13_37: %M.type = name_ref .Self, %.Self.loc13_19 [symbolic_self = constants.%.Self.807] -// CHECK:STDOUT: %.Self.as_type.loc13_37: type = facet_access_type %.Self.ref.loc13_37 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_37: type = converted %.Self.ref.loc13_37, %.Self.as_type.loc13_37 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impl.elem1.loc13_30.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element1 [symbolic_self = constants.%impl.elem1.66c] +// CHECK:STDOUT: %rewrite.loc13_28.1 = requirement_rewrite %impl.elem0.loc13_25.1, %impl.elem1.loc13_30.1 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_37: %M.type = name_ref .Self, %.Self.frozen.loc13_19 [symbolic_self = constants.%.Self.frozen.1cb] +// CHECK:STDOUT: %.Self.as_type.loc13_37: type = facet_access_type %.Self.ref.loc13_37 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_37: type = converted %.Self.ref.loc13_37, %.Self.as_type.loc13_37 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y.ref.loc13_37: %M.assoc_type = name_ref Y, @Y.%assoc1 [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1.loc13_37: type = impl_witness_access constants.%M.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %.Self.ref.loc13_42: %M.type = name_ref .Self, %.Self.loc13_19 [symbolic_self = constants.%.Self.807] -// CHECK:STDOUT: %.Self.as_type.loc13_42: type = facet_access_type %.Self.ref.loc13_42 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_42: type = converted %.Self.ref.loc13_42, %.Self.as_type.loc13_42 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impl.elem1.loc13_37.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element1 [symbolic_self = constants.%impl.elem1.66c] +// CHECK:STDOUT: %.Self.ref.loc13_42: %M.type = name_ref .Self, %.Self.frozen.loc13_19 [symbolic_self = constants.%.Self.frozen.1cb] +// CHECK:STDOUT: %.Self.as_type.loc13_42: type = facet_access_type %.Self.ref.loc13_42 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_42: type = converted %.Self.ref.loc13_42, %.Self.as_type.loc13_42 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc13_42: %M.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc13_42: type = impl_witness_access constants.%M.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc13_42, %impl.elem1.loc13_30 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %.Self.ref.loc13_49: %M.type = name_ref .Self, %.Self.loc13_19 [symbolic_self = constants.%.Self.807] -// CHECK:STDOUT: %.Self.as_type.loc13_49: type = facet_access_type %.Self.ref.loc13_49 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_49: type = converted %.Self.ref.loc13_49, %.Self.as_type.loc13_49 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impl.elem0.loc13_42.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element0 [symbolic_self = constants.%impl.elem0.352] +// CHECK:STDOUT: %impl.elem0.subst.loc13_42.1: type = impl_witness_access_substituted %impl.elem0.loc13_42.1, %impl.elem1.loc13_30.1 [symbolic_self = constants.%impl.elem1.66c] +// CHECK:STDOUT: %rewrite.loc13_40.1 = requirement_rewrite %impl.elem1.loc13_37.1, %impl.elem0.subst.loc13_42.1 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_49: %M.type = name_ref .Self, %.Self.frozen.loc13_19 [symbolic_self = constants.%.Self.frozen.1cb] +// CHECK:STDOUT: %.Self.as_type.loc13_49: type = facet_access_type %.Self.ref.loc13_49 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_49: type = converted %.Self.ref.loc13_49, %.Self.as_type.loc13_49 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Z.ref: %M.assoc_type = name_ref Z, @Z.%assoc2 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%M.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2] +// CHECK:STDOUT: %impl.elem2.loc13_49.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element2 [symbolic_self = constants.%impl.elem2.c22] // CHECK:STDOUT: %.loc13_55.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_55.2: type = converted %.loc13_55.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc13_52.1 = requirement_rewrite %impl.elem2.loc13_49.1, %.loc13_55.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc13_25.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element0 [symbolic_self = constants.%impl.elem0.c24] +// CHECK:STDOUT: %impl.elem1.loc13_30.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e] +// CHECK:STDOUT: %rewrite.loc13_28.2 = requirement_rewrite %impl.elem0.loc13_25.2, %impl.elem1.loc13_30.2 [concrete] +// CHECK:STDOUT: %impl.elem1.loc13_37.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e] +// CHECK:STDOUT: %impl.elem0.loc13_42.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element0 [symbolic_self = constants.%impl.elem0.c24] +// CHECK:STDOUT: %impl.elem1.loc13_30.3: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e] +// CHECK:STDOUT: %impl.elem0.subst.loc13_42.2: type = impl_witness_access_substituted %impl.elem0.loc13_42.2, %impl.elem1.loc13_30.3 [symbolic_self = constants.%impl.elem1.e3e] +// CHECK:STDOUT: %rewrite.loc13_40.2 = requirement_rewrite %impl.elem1.loc13_37.2, %impl.elem0.subst.loc13_42.2 [concrete] +// CHECK:STDOUT: %impl.elem2.loc13_49.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element2 [symbolic_self = constants.%impl.elem2.017] +// CHECK:STDOUT: %rewrite.loc13_52.2 = requirement_rewrite %impl.elem2.loc13_49.2, %.loc13_55.2 [concrete] // CHECK:STDOUT: %.loc13_19.2: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %M.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc13_25, %impl.elem1.loc13_30 -// CHECK:STDOUT: requirement_rewrite %impl.elem1.loc13_37, %impl.elem0.subst -// CHECK:STDOUT: requirement_rewrite %impl.elem2, %.loc13_55.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %M.ref [concrete] +// CHECK:STDOUT: %rewrite.loc13_28.2 = requirement_rewrite %impl.elem0.loc13_25.2, %impl.elem1.loc13_30.2 [concrete] +// CHECK:STDOUT: %rewrite.loc13_40.2 = requirement_rewrite %impl.elem1.loc13_37.2, %impl.elem0.subst.loc13_42.2 [concrete] +// CHECK:STDOUT: %rewrite.loc13_52.2 = requirement_rewrite %impl.elem2.loc13_49.2, %.loc13_55.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T: = symbolic_binding T, 0 [concrete = ] 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 6e3cdd956bd0..ad7ea2403bde 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 @@ -41,7 +41,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Scalar.patt: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic] // CHECK:STDOUT: %Scalar: type = symbolic_binding Scalar, 0 [symbolic] @@ -104,7 +104,7 @@ fn G() { // CHECK:STDOUT: %Scalar.patt.loc15_25.1: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic = %Scalar.patt.loc15_25.2 (constants.%Scalar.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_28.1: type = splice_block %.loc15_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %Scalar.loc15_25.2: type = symbolic_binding Scalar, 0 [symbolic = %Scalar.loc15_25.1 (constants.%Scalar)] @@ -123,12 +123,12 @@ fn G() { // CHECK:STDOUT: %U.patt.loc27_40.1: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc27_40.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc27_26.1: type = splice_block %.loc27_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc27_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc27_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc27_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc27_23.2: type = symbolic_binding T, 0 [symbolic = %T.loc27_23.1 (constants.%T)] // CHECK:STDOUT: %.loc27_52: type = splice_block %Generic.type.loc27_52.2 [symbolic = %Generic.type.loc27_52.1 (constants.%Generic.type.ee14e9.2)] { -// CHECK:STDOUT: %.Self.loc27_40: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc27_40: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc27_23.2 [symbolic = %T.loc27_23.1 (constants.%T)] // CHECK:STDOUT: %Generic.type.loc27_52.2: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc27_52.1 (constants.%Generic.type.ee14e9.2)] diff --git a/toolchain/check/testdata/facet/fail_convert_facet_value_to_missing_impl.carbon b/toolchain/check/testdata/facet/fail_convert_facet_value_to_missing_impl.carbon index 143f40ee2cf8..d2978acc049e 100644 --- a/toolchain/check/testdata/facet/fail_convert_facet_value_to_missing_impl.carbon +++ b/toolchain/check/testdata/facet/fail_convert_facet_value_to_missing_impl.carbon @@ -34,7 +34,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %Animal.type: type = facet_type <@Animal> [concrete] // CHECK:STDOUT: %Self.f00: %Animal.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.880: type = pattern_type %Eats.type [concrete] // CHECK:STDOUT: %T.patt.9e8: %pattern_type.880 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.672: %Eats.type = symbolic_binding T, 0 [symbolic] @@ -81,7 +81,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %e.patt.loc18_27.1: @Feed.%pattern_type (%pattern_type.aed) = at_binding_pattern e, %e.param_patt.loc18_27.1 [symbolic = %e.patt.loc18_27.2 (constants.%e.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_13: type = splice_block %Eats.ref [concrete = constants.%Eats.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Eats.ref: type = name_ref Eats, file.%Eats.decl [concrete = constants.%Eats.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc18_10.2: %Eats.type = symbolic_binding T, 0 [symbolic = %T.loc18_10.1 (constants.%T.672)] @@ -99,7 +99,7 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); } // CHECK:STDOUT: %a.patt.loc27_30.1: @HandleAnimal.%pattern_type (%pattern_type.e90) = at_binding_pattern a, %a.param_patt.loc27_30.1 [symbolic = %a.patt.loc27_30.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc27_21: type = splice_block %Animal.ref [concrete = constants.%Animal.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Animal.ref: type = name_ref Animal, file.%Animal.decl [concrete = constants.%Animal.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc27_18.2: %Animal.type = symbolic_binding T, 0 [symbolic = %T.loc27_18.1 (constants.%T.443)] 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 1f4fd9ab94eb..0bc1b06e0824 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 @@ -45,7 +45,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, )), from:! RuntimeConvertFrom) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %tuple.type: type = tuple_type (type) [concrete] // CHECK:STDOUT: %tuple.0d2: %tuple.type = tuple_value (type) [concrete] // CHECK:STDOUT: %pattern_type.f1e: type = pattern_type %tuple.type [concrete] @@ -132,7 +132,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, )), from:! RuntimeConvertFrom) { // CHECK:STDOUT: %T.patt.loc17_18.1: %pattern_type.f1e = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc17_18.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_28.1: type = splice_block %.loc17_28.3 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc17_22: type = type_literal type [concrete = type] // CHECK:STDOUT: %.loc17_28.2: %tuple.type = tuple_literal (%.loc17_22) [concrete = constants.%tuple.0d2] // CHECK:STDOUT: %.loc17_28.3: type = converted %.loc17_28.2, constants.%tuple.type [concrete = constants.%tuple.type] @@ -155,14 +155,14 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, )), from:! RuntimeConvertFrom) { // CHECK:STDOUT: %x.patt.loc27_44.1: @F.%pattern_type.loc27_44 (%pattern_type.b2f) = at_binding_pattern x, %x.param_patt.loc27_44.1 [symbolic = %x.patt.loc27_44.2 (constants.%x.patt.a80)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc27_17.1: type = splice_block %.loc27_17.3 [concrete = constants.%tuple.type] { -// CHECK:STDOUT: %.Self.loc27_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc27_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc27_11: type = type_literal type [concrete = type] // CHECK:STDOUT: %.loc27_17.2: %tuple.type = tuple_literal (%.loc27_11) [concrete = constants.%tuple.0d2] // CHECK:STDOUT: %.loc27_17.3: type = converted %.loc27_17.2, constants.%tuple.type [concrete = constants.%tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc27_7.2: %tuple.type = symbolic_binding T, 0 [symbolic = %T.loc27_7.1 (constants.%T)] // CHECK:STDOUT: %.loc27_32: type = splice_block %tuple.elem0.loc27_32.2 [symbolic = %tuple.elem0.loc27_32.1 (constants.%tuple.elem0)] { -// CHECK:STDOUT: %.Self.loc27_28: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc27_28: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref.loc27_31: %tuple.type = name_ref T, %T.loc27_7.2 [symbolic = %T.loc27_7.1 (constants.%T)] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] // CHECK:STDOUT: %tuple.elem0.loc27_32.2: type = tuple_access %T.ref.loc27_31, element0 [symbolic = %tuple.elem0.loc27_32.1 (constants.%tuple.elem0)] @@ -192,7 +192,7 @@ fn G(holds_to: HoldsType((RuntimeConvertTo, )), from:! RuntimeConvertFrom) { // CHECK:STDOUT: } // CHECK:STDOUT: %holds_to: %HoldsType.9f2 = wrapper_binding holds_to, %holds_to.param // CHECK:STDOUT: %.loc29_56: type = splice_block %RuntimeConvertFrom.ref [concrete = constants.%RuntimeConvertFrom] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %RuntimeConvertFrom.ref: type = name_ref RuntimeConvertFrom, file.%RuntimeConvertFrom.decl [concrete = constants.%RuntimeConvertFrom] // CHECK:STDOUT: } // CHECK:STDOUT: %from.loc29_53.2: %RuntimeConvertFrom = symbolic_binding from, 0 [symbolic = %from.loc29_53.1 (constants.%from)] diff --git a/toolchain/check/testdata/facet/period_self.carbon b/toolchain/check/testdata/facet/period_self.carbon index 348992dba3d2..72e6c1b98298 100644 --- a/toolchain/check/testdata/facet/period_self.carbon +++ b/toolchain/check/testdata/facet/period_self.carbon @@ -532,7 +532,7 @@ fn F(T:! L where C(.W) impls Z(.Self) and .Self impls M) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -543,26 +543,39 @@ fn F(T:! L where C(.W) impls Z(.Self) and .Self impls M) { // CHECK:STDOUT: %Self.191: %I.type.3fe = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.assoc_type.b71: type = assoc_entity_type @I, @I(%T.67d) [symbolic] // CHECK:STDOUT: %assoc0.d20: %I.assoc_type.b71 = assoc_entity element0, @I.WithSelf.%I1 [symbolic] -// CHECK:STDOUT: %.Self.as_type.246: type = facet_access_type %.Self.c39 [symbolic_self] -// CHECK:STDOUT: %I.type.f3d: type = facet_type <@I, @I(%.Self.as_type.246)> [symbolic_self] -// CHECK:STDOUT: %.Self.0f0: %I.type.f3d = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Self.24d: %I.type.f3d = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %I.assoc_type.ea7: type = assoc_entity_type @I, @I(%.Self.as_type.246) [symbolic_self] -// CHECK:STDOUT: %assoc0.c72: %I.assoc_type.ea7 = assoc_entity element0, @I.WithSelf.%I1 [symbolic_self] -// CHECK:STDOUT: %.Self.as_type.a1c: type = facet_access_type %.Self.0f0 [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness.67f: = lookup_impl_witness %.Self.0f0, @I, @I(%.Self.as_type.246) [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness.67f, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.bce: type = facet_access_type %.Self.frozen.197 [symbolic_self] +// CHECK:STDOUT: %I.type.0e8: type = facet_type <@I, @I(%.Self.frozen.as_type.bce)> [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.edc: %I.type.0e8 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Self.a53: %I.type.0e8 = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %I.assoc_type.96e: type = assoc_entity_type @I, @I(%.Self.frozen.as_type.bce) [symbolic_self] +// CHECK:STDOUT: %assoc0.cab: %I.assoc_type.96e = assoc_entity element0, @I.WithSelf.%I1 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.7bb: type = facet_access_type %.Self.frozen.edc [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.d6e: = lookup_impl_witness %.Self.frozen.edc, @I, @I(%.Self.frozen.as_type.bce) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.14f: type = impl_witness_access %I.lookup_impl_witness.d6e, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %I_where.type.4b7: type = facet_type <@I, @I(%.Self.as_type.246) where %impl.elem0 = %empty_tuple.type> [symbolic_self] -// CHECK:STDOUT: %pattern_type.021: type = pattern_type %I_where.type.4b7 [symbolic_self] -// CHECK:STDOUT: %T.patt.e6f: %pattern_type.021 = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %T.8c8: %I_where.type.4b7 = symbolic_binding T, 0 [symbolic] -// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.8c8 [symbolic] +// CHECK:STDOUT: %.Self.e0b: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.e0b [symbolic_self] +// CHECK:STDOUT: %I.type.a4e: type = facet_type <@I, @I(%.Self.as_type)> [symbolic_self] +// CHECK:STDOUT: %.Self.b30: %I.type.0e8 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.eea: = lookup_impl_witness %.Self.b30, @I, @I(%.Self.as_type) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.439: type = impl_witness_access %I.lookup_impl_witness.eea, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type.760: type = facet_type <@I, @I(%.Self.as_type) where %impl.elem0.439 = %empty_tuple.type> [symbolic_self] +// CHECK:STDOUT: %.Self.df8: %I.type.a4e = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.0d5: = lookup_impl_witness %.Self.df8, @I, @I(%.Self.as_type) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.21c: type = impl_witness_access %I.lookup_impl_witness.0d5, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type.6d9: type = facet_type <@I, @I(%.Self.as_type) where %impl.elem0.21c = %empty_tuple.type> [symbolic_self] +// CHECK:STDOUT: %pattern_type.4af: type = pattern_type %I_where.type.6d9 [symbolic_self] +// CHECK:STDOUT: %T.patt.bfa: %pattern_type.4af = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.fb1: %I_where.type.6d9 = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %Self.6fd: %I.type.a4e = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %I.assoc_type.901: type = assoc_entity_type @I, @I(%.Self.as_type) [symbolic_self] +// CHECK:STDOUT: %assoc0.267: %I.assoc_type.901 = assoc_entity element0, @I.WithSelf.%I1 [symbolic_self] +// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.fb1 [symbolic] // CHECK:STDOUT: %facet_value: %type = facet_value %T.as_type, () [symbolic] -// CHECK:STDOUT: %I.type.a52: type = facet_type <@I, @I(%T.as_type)> [symbolic] -// CHECK:STDOUT: %I_where.type.e53: type = facet_type <@I, @I(%T.as_type) where %impl.elem0 = %empty_tuple.type> [symbolic] -// CHECK:STDOUT: %I.lookup_impl_witness.506: = lookup_impl_witness %T.8c8, @I, @I(%T.as_type) [symbolic] -// CHECK:STDOUT: %I.facet: %I.type.f3d = facet_value %T.as_type, (%I.lookup_impl_witness.506) [symbolic] +// CHECK:STDOUT: %I.type.1d2: type = facet_type <@I, @I(%T.as_type)> [symbolic] +// CHECK:STDOUT: %I_where.type.3f6: type = facet_type <@I, @I(%T.as_type) where %impl.elem0.21c = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %I.lookup_impl_witness.962: = lookup_impl_witness %T.fb1, @I, @I(%T.as_type) [symbolic] +// CHECK:STDOUT: %I.facet: %I.type.a4e = facet_value %T.as_type, (%I.lookup_impl_witness.962) [symbolic] // CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete] @@ -578,96 +591,120 @@ fn F(T:! L where C(.W) impls Z(.Self) and .Self impls M) { // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T.67d)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %T.patt.loc8_7.1: %pattern_type.021 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt.e6f)] +// CHECK:STDOUT: %T.patt.loc8_7.1: %pattern_type.4af = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt.bfa)] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete = constants.%return.param_patt] // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %impl.elem0.loc8_39 [concrete = constants.%return.patt] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: %I_where.type.4b7 = name_ref T, %T.loc8_7.2 [symbolic = %T.loc8_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: %T.ref: %I_where.type.6d9 = name_ref T, %T.loc8_7.2 [symbolic = %T.loc8_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %T.as_type.loc8_39.2: type = facet_access_type %T.ref [symbolic = %T.as_type.loc8_39.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc8_39.1: type = converted %T.ref, %T.as_type.loc8_39.2 [symbolic = %T.as_type.loc8_39.1 (constants.%T.as_type)] -// CHECK:STDOUT: %.loc8_39.2: %I.assoc_type.ea7 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type.246, constants.%T.8c8) [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %I1.ref.loc8_39: %I.assoc_type.ea7 = name_ref I1, %.loc8_39.2 [symbolic_self = constants.%assoc0.c72] +// CHECK:STDOUT: %.loc8_39.2: %I.assoc_type.901 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type, constants.%T.fb1) [symbolic_self = constants.%assoc0.267] +// CHECK:STDOUT: %I1.ref.loc8_39: %I.assoc_type.901 = name_ref I1, %.loc8_39.2 [symbolic_self = constants.%assoc0.267] // CHECK:STDOUT: %facet_value.loc8_39.2: %type = facet_value constants.%T.as_type, () [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] // CHECK:STDOUT: %.loc8_39.3: %type = converted constants.%T.as_type, %facet_value.loc8_39.2 [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %I.type.loc8_39.2: type = facet_type <@I, @I(constants.%T.as_type)> [symbolic = %I.type.loc8_39.1 (constants.%I.type.a52)] -// CHECK:STDOUT: %T.as_type.loc8_39.3: type = facet_access_type constants.%T.8c8 [symbolic = %T.as_type.loc8_39.1 (constants.%T.as_type)] +// CHECK:STDOUT: %I.type.loc8_39.2: type = facet_type <@I, @I(constants.%T.as_type)> [symbolic = %I.type.loc8_39.1 (constants.%I.type.1d2)] +// CHECK:STDOUT: %T.as_type.loc8_39.3: type = facet_access_type constants.%T.fb1 [symbolic = %T.as_type.loc8_39.1 (constants.%T.as_type)] // CHECK:STDOUT: %facet_value.loc8_39.3: %type = facet_value %T.as_type.loc8_39.3, () [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %.loc8_39.4: %type = converted constants.%T.8c8, %facet_value.loc8_39.3 [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %I_where.type.loc8_39.2: type = facet_type <@I, @I(constants.%T.as_type) where constants.%impl.elem0 = constants.%empty_tuple.type> [symbolic = %I_where.type.loc8_39.1 (constants.%I_where.type.e53)] -// CHECK:STDOUT: %T.as_type.loc8_39.4: type = facet_access_type constants.%T.8c8 [symbolic = %T.as_type.loc8_39.1 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc8_39.4: %type = converted constants.%T.fb1, %facet_value.loc8_39.3 [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] +// CHECK:STDOUT: %I_where.type.loc8_39.2: type = facet_type <@I, @I(constants.%T.as_type) where constants.%impl.elem0.21c = constants.%empty_tuple.type> [symbolic = %I_where.type.loc8_39.1 (constants.%I_where.type.3f6)] +// CHECK:STDOUT: %T.as_type.loc8_39.4: type = facet_access_type constants.%T.fb1 [symbolic = %T.as_type.loc8_39.1 (constants.%T.as_type)] // CHECK:STDOUT: %facet_value.loc8_39.4: %type = facet_value %T.as_type.loc8_39.4, () [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %.loc8_39.5: %type = converted constants.%T.8c8, %facet_value.loc8_39.4 [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %impl.elem0.loc8_39: type = impl_witness_access constants.%I.lookup_impl_witness.506, element0 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc8_39.5: %type = converted constants.%T.fb1, %facet_value.loc8_39.4 [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] +// CHECK:STDOUT: %impl.elem0.loc8_39: type = impl_witness_access constants.%I.lookup_impl_witness.962, element0 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc8_39.6: Core.Form = init_form %impl.elem0.loc8_39 [concrete = constants.%.262] -// CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.2 [symbolic_self = constants.%I_where.type.4b7] { -// CHECK:STDOUT: %.Self.loc8_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.3 [symbolic_self = constants.%I_where.type.6d9] { +// CHECK:STDOUT: %.Self.frozen.loc8_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic] -// CHECK:STDOUT: %.Self.ref.loc8_12: %type = name_ref .Self, %.Self.loc8_7 [symbolic_self = constants.%.Self.c39] -// CHECK:STDOUT: %.Self.as_type.loc8_17: type = facet_access_type %.Self.ref.loc8_12 [symbolic_self = constants.%.Self.as_type.246] -// CHECK:STDOUT: %.loc8_17: type = converted %.Self.ref.loc8_12, %.Self.as_type.loc8_17 [symbolic_self = constants.%.Self.as_type.246] -// CHECK:STDOUT: %I.type.loc8_17: type = facet_type <@I, @I(constants.%.Self.as_type.246)> [symbolic_self = constants.%I.type.f3d] -// CHECK:STDOUT: %.Self.loc8_19: %I.type.f3d = symbolic_binding .Self [symbolic_self = constants.%.Self.0f0] -// CHECK:STDOUT: %.Self.ref.loc8_25: %I.type.f3d = name_ref .Self, %.Self.loc8_19 [symbolic_self = constants.%.Self.0f0] -// CHECK:STDOUT: %.Self.as_type.loc8_25: type = facet_access_type %.Self.ref.loc8_25 [symbolic_self = constants.%.Self.as_type.a1c] -// CHECK:STDOUT: %.loc8_25.1: type = converted %.Self.ref.loc8_25, %.Self.as_type.loc8_25 [symbolic_self = constants.%.Self.as_type.a1c] -// CHECK:STDOUT: %.loc8_25.2: %I.assoc_type.ea7 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type.246, constants.%.Self.0f0) [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %I1.ref.loc8_25: %I.assoc_type.ea7 = name_ref I1, %.loc8_25.2 [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %impl.elem0.loc8_25: type = impl_witness_access constants.%I.lookup_impl_witness.67f, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %.Self.ref.loc8_12: %type = name_ref .Self, %.Self.frozen.loc8_7 [symbolic_self = constants.%.Self.frozen.197] +// CHECK:STDOUT: %.Self.as_type.loc8_17: type = facet_access_type %.Self.ref.loc8_12 [symbolic_self = constants.%.Self.frozen.as_type.bce] +// CHECK:STDOUT: %.loc8_17: type = converted %.Self.ref.loc8_12, %.Self.as_type.loc8_17 [symbolic_self = constants.%.Self.frozen.as_type.bce] +// CHECK:STDOUT: %I.type.loc8_17.1: type = facet_type <@I, @I(constants.%.Self.frozen.as_type.bce)> [symbolic_self = constants.%I.type.0e8] +// CHECK:STDOUT: %.Self.frozen.loc8_19: %I.type.0e8 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.edc] +// CHECK:STDOUT: %base_facet_type.loc8_19.1 = requirement_base_facet_type %I.type.loc8_17.1 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_25: %I.type.0e8 = name_ref .Self, %.Self.frozen.loc8_19 [symbolic_self = constants.%.Self.frozen.edc] +// CHECK:STDOUT: %.Self.as_type.loc8_25: type = facet_access_type %.Self.ref.loc8_25 [symbolic_self = constants.%.Self.frozen.as_type.7bb] +// CHECK:STDOUT: %.loc8_25.1: type = converted %.Self.ref.loc8_25, %.Self.as_type.loc8_25 [symbolic_self = constants.%.Self.frozen.as_type.7bb] +// CHECK:STDOUT: %.loc8_25.2: %I.assoc_type.96e = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.frozen.as_type.bce, constants.%.Self.frozen.edc) [symbolic_self = constants.%assoc0.cab] +// CHECK:STDOUT: %I1.ref.loc8_25: %I.assoc_type.96e = name_ref I1, %.loc8_25.2 [symbolic_self = constants.%assoc0.cab] +// CHECK:STDOUT: %impl.elem0.loc8_25.1: type = impl_witness_access constants.%I.lookup_impl_witness.d6e, element0 [symbolic_self = constants.%impl.elem0.14f] // CHECK:STDOUT: %.loc8_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_32.2: type = converted %.loc8_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc8_19.2: type = where_expr [symbolic_self = constants.%I_where.type.4b7] { -// CHECK:STDOUT: requirement_base_facet_type %I.type.loc8_17 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8_25, %.loc8_32.2 +// CHECK:STDOUT: %rewrite.loc8_29.1 = requirement_rewrite %impl.elem0.loc8_25.1, %.loc8_32.2 [concrete] +// CHECK:STDOUT: %I.type.loc8_17.2: type = facet_type <@I, @I(constants.%.Self.as_type)> [symbolic_self = constants.%I.type.a4e] +// CHECK:STDOUT: %base_facet_type.loc8_19.2 = requirement_base_facet_type %I.type.loc8_17.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_25.2: type = impl_witness_access constants.%I.lookup_impl_witness.eea, element0 [symbolic_self = constants.%impl.elem0.439] +// CHECK:STDOUT: %rewrite.loc8_29.2 = requirement_rewrite %impl.elem0.loc8_25.2, %.loc8_32.2 [concrete] +// CHECK:STDOUT: %.loc8_19.2: type = where_expr [symbolic_self = constants.%I_where.type.760] { +// CHECK:STDOUT: %base_facet_type.loc8_19.2 = requirement_base_facet_type %I.type.loc8_17.2 [concrete] +// CHECK:STDOUT: %rewrite.loc8_29.2 = requirement_rewrite %impl.elem0.loc8_25.2, %.loc8_32.2 [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: %impl.elem0.loc8_25.3: type = impl_witness_access constants.%I.lookup_impl_witness.0d5, element0 [symbolic_self = constants.%impl.elem0.21c] +// CHECK:STDOUT: %rewrite.loc8_29.3 = requirement_rewrite %impl.elem0.loc8_25.3, %.loc8_32.2 [concrete] +// CHECK:STDOUT: %.loc8_19.3: type = where_expr [symbolic_self = constants.%I_where.type.6d9] { +// CHECK:STDOUT: %base_facet_type.loc8_19.2 = requirement_base_facet_type %I.type.loc8_17.2 [concrete] +// CHECK:STDOUT: %rewrite.loc8_29.3 = requirement_rewrite %impl.elem0.loc8_25.3, %.loc8_32.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc8_7.2: %I_where.type.4b7 = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: %T.loc8_7.2: %I_where.type.6d9 = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %T.patt.loc12_7.1: %pattern_type.021 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_7.2 (constants.%T.patt.e6f)] +// CHECK:STDOUT: %T.patt.loc12_7.1: %pattern_type.4af = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_7.2 (constants.%T.patt.bfa)] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete = constants.%return.param_patt] // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %impl.elem0.loc12_47 [concrete = constants.%return.patt] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: %I_where.type.4b7 = name_ref T, %T.loc12_7.2 [symbolic = %T.loc12_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: %T.ref: %I_where.type.6d9 = name_ref T, %T.loc12_7.2 [symbolic = %T.loc12_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %T.as_type.loc12_47.2: type = facet_access_type %T.ref [symbolic = %T.as_type.loc12_47.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc12_47.1: type = converted %T.ref, %T.as_type.loc12_47.2 [symbolic = %T.as_type.loc12_47.1 (constants.%T.as_type)] -// CHECK:STDOUT: %.loc12_47.2: %I.assoc_type.ea7 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type.246, constants.%T.8c8) [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %I1.ref.loc12_47: %I.assoc_type.ea7 = name_ref I1, %.loc12_47.2 [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %T.as_type.loc12_47.3: type = facet_access_type constants.%T.8c8 [symbolic = %T.as_type.loc12_47.1 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc12_47.2: %I.assoc_type.901 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type, constants.%T.fb1) [symbolic_self = constants.%assoc0.267] +// CHECK:STDOUT: %I1.ref.loc12_47: %I.assoc_type.901 = name_ref I1, %.loc12_47.2 [symbolic_self = constants.%assoc0.267] +// CHECK:STDOUT: %T.as_type.loc12_47.3: type = facet_access_type constants.%T.fb1 [symbolic = %T.as_type.loc12_47.1 (constants.%T.as_type)] // CHECK:STDOUT: %facet_value.loc12_47.2: %type = facet_value %T.as_type.loc12_47.3, () [symbolic = %facet_value.loc12_47.1 (constants.%facet_value)] -// CHECK:STDOUT: %.loc12_47.3: %type = converted constants.%T.8c8, %facet_value.loc12_47.2 [symbolic = %facet_value.loc12_47.1 (constants.%facet_value)] -// CHECK:STDOUT: %impl.elem0.loc12_47: type = impl_witness_access constants.%I.lookup_impl_witness.506, element0 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc12_47.3: %type = converted constants.%T.fb1, %facet_value.loc12_47.2 [symbolic = %facet_value.loc12_47.1 (constants.%facet_value)] +// CHECK:STDOUT: %impl.elem0.loc12_47: type = impl_witness_access constants.%I.lookup_impl_witness.962, element0 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc12_47.4: Core.Form = init_form %impl.elem0.loc12_47 [concrete = constants.%.262] -// CHECK:STDOUT: %.loc12_27.1: type = splice_block %.loc12_27.2 [symbolic_self = constants.%I_where.type.4b7] { -// CHECK:STDOUT: %.Self.loc12_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc12_27.1: type = splice_block %.loc12_27.3 [symbolic_self = constants.%I_where.type.6d9] { +// CHECK:STDOUT: %.Self.frozen.loc12_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic] -// CHECK:STDOUT: %.Self.ref.loc12_12: %type = name_ref .Self, %.Self.loc12_7 [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.ref.loc12_12: %type = name_ref .Self, %.Self.frozen.loc12_7 [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc12_21: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type.loc12_18: type = facet_access_type %.Self.ref.loc12_12 [symbolic_self = constants.%.Self.as_type.246] -// CHECK:STDOUT: %.loc12_18: type = converted %.Self.ref.loc12_12, %.Self.as_type.loc12_18 [symbolic_self = constants.%.Self.as_type.246] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%.Self.as_type.246)> [symbolic_self = constants.%I.type.f3d] -// CHECK:STDOUT: %.Self.loc12_27: %I.type.f3d = symbolic_binding .Self [symbolic_self = constants.%.Self.0f0] -// CHECK:STDOUT: %.Self.ref.loc12_33: %I.type.f3d = name_ref .Self, %.Self.loc12_27 [symbolic_self = constants.%.Self.0f0] -// CHECK:STDOUT: %.Self.as_type.loc12_33: type = facet_access_type %.Self.ref.loc12_33 [symbolic_self = constants.%.Self.as_type.a1c] -// CHECK:STDOUT: %.loc12_33.1: type = converted %.Self.ref.loc12_33, %.Self.as_type.loc12_33 [symbolic_self = constants.%.Self.as_type.a1c] -// CHECK:STDOUT: %.loc12_33.2: %I.assoc_type.ea7 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type.246, constants.%.Self.0f0) [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %I1.ref.loc12_33: %I.assoc_type.ea7 = name_ref I1, %.loc12_33.2 [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %impl.elem0.loc12_33: type = impl_witness_access constants.%I.lookup_impl_witness.67f, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %.Self.as_type.loc12_18: type = facet_access_type %.Self.ref.loc12_12 [symbolic_self = constants.%.Self.frozen.as_type.bce] +// CHECK:STDOUT: %.loc12_18: type = converted %.Self.ref.loc12_12, %.Self.as_type.loc12_18 [symbolic_self = constants.%.Self.frozen.as_type.bce] +// CHECK:STDOUT: %I.type.loc12_25.1: type = facet_type <@I, @I(constants.%.Self.frozen.as_type.bce)> [symbolic_self = constants.%I.type.0e8] +// CHECK:STDOUT: %.Self.frozen.loc12_27: %I.type.0e8 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.edc] +// CHECK:STDOUT: %base_facet_type.loc12_27.1 = requirement_base_facet_type %I.type.loc12_25.1 [concrete] +// CHECK:STDOUT: %.Self.ref.loc12_33: %I.type.0e8 = name_ref .Self, %.Self.frozen.loc12_27 [symbolic_self = constants.%.Self.frozen.edc] +// CHECK:STDOUT: %.Self.as_type.loc12_33: type = facet_access_type %.Self.ref.loc12_33 [symbolic_self = constants.%.Self.frozen.as_type.7bb] +// CHECK:STDOUT: %.loc12_33.1: type = converted %.Self.ref.loc12_33, %.Self.as_type.loc12_33 [symbolic_self = constants.%.Self.frozen.as_type.7bb] +// CHECK:STDOUT: %.loc12_33.2: %I.assoc_type.96e = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.frozen.as_type.bce, constants.%.Self.frozen.edc) [symbolic_self = constants.%assoc0.cab] +// CHECK:STDOUT: %I1.ref.loc12_33: %I.assoc_type.96e = name_ref I1, %.loc12_33.2 [symbolic_self = constants.%assoc0.cab] +// CHECK:STDOUT: %impl.elem0.loc12_33.1: type = impl_witness_access constants.%I.lookup_impl_witness.d6e, element0 [symbolic_self = constants.%impl.elem0.14f] // CHECK:STDOUT: %.loc12_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_40.2: type = converted %.loc12_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc12_27.2: type = where_expr [symbolic_self = constants.%I_where.type.4b7] { -// CHECK:STDOUT: requirement_base_facet_type %I.type -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc12_33, %.loc12_40.2 +// CHECK:STDOUT: %rewrite.loc12_37.1 = requirement_rewrite %impl.elem0.loc12_33.1, %.loc12_40.2 [concrete] +// CHECK:STDOUT: %I.type.loc12_25.2: type = facet_type <@I, @I(constants.%.Self.as_type)> [symbolic_self = constants.%I.type.a4e] +// CHECK:STDOUT: %base_facet_type.loc12_27.2 = requirement_base_facet_type %I.type.loc12_25.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc12_33.2: type = impl_witness_access constants.%I.lookup_impl_witness.eea, element0 [symbolic_self = constants.%impl.elem0.439] +// CHECK:STDOUT: %rewrite.loc12_37.2 = requirement_rewrite %impl.elem0.loc12_33.2, %.loc12_40.2 [concrete] +// CHECK:STDOUT: %.loc12_27.2: type = where_expr [symbolic_self = constants.%I_where.type.760] { +// CHECK:STDOUT: %base_facet_type.loc12_27.2 = requirement_base_facet_type %I.type.loc12_25.2 [concrete] +// CHECK:STDOUT: %rewrite.loc12_37.2 = requirement_rewrite %impl.elem0.loc12_33.2, %.loc12_40.2 [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: %impl.elem0.loc12_33.3: type = impl_witness_access constants.%I.lookup_impl_witness.0d5, element0 [symbolic_self = constants.%impl.elem0.21c] +// CHECK:STDOUT: %rewrite.loc12_37.3 = requirement_rewrite %impl.elem0.loc12_33.3, %.loc12_40.2 [concrete] +// CHECK:STDOUT: %.loc12_27.3: type = where_expr [symbolic_self = constants.%I_where.type.6d9] { +// CHECK:STDOUT: %base_facet_type.loc12_27.2 = requirement_base_facet_type %I.type.loc12_25.2 [concrete] +// CHECK:STDOUT: %rewrite.loc12_37.3 = requirement_rewrite %impl.elem0.loc12_33.3, %.loc12_40.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc12_7.2: %I_where.type.4b7 = symbolic_binding T, 0 [symbolic = %T.loc12_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: %T.loc12_7.2: %I_where.type.6d9 = symbolic_binding T, 0 [symbolic = %T.loc12_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -701,13 +738,13 @@ fn F(T:! L where C(.W) impls Z(.Self) and .Self impls M) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc8_7.2: %I_where.type.4b7) { -// CHECK:STDOUT: %T.patt.loc8_7.2: %pattern_type.021 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt.e6f)] -// CHECK:STDOUT: %T.loc8_7.1: %I_where.type.4b7 = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: generic fn @F(%T.loc8_7.2: %I_where.type.6d9) { +// CHECK:STDOUT: %T.patt.loc8_7.2: %pattern_type.4af = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt.bfa)] +// CHECK:STDOUT: %T.loc8_7.1: %I_where.type.6d9 = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %T.as_type.loc8_39.1: type = facet_access_type %T.loc8_7.1 [symbolic = %T.as_type.loc8_39.1 (constants.%T.as_type)] // CHECK:STDOUT: %facet_value.loc8_39.1: %type = facet_value %T.as_type.loc8_39.1, () [symbolic = %facet_value.loc8_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %I.type.loc8_39.1: type = facet_type <@I, @I(%T.as_type.loc8_39.1)> [symbolic = %I.type.loc8_39.1 (constants.%I.type.a52)] -// CHECK:STDOUT: %I_where.type.loc8_39.1: type = facet_type <@I, @I(%T.as_type.loc8_39.1) where constants.%impl.elem0 = constants.%empty_tuple.type> [symbolic = %I_where.type.loc8_39.1 (constants.%I_where.type.e53)] +// CHECK:STDOUT: %I.type.loc8_39.1: type = facet_type <@I, @I(%T.as_type.loc8_39.1)> [symbolic = %I.type.loc8_39.1 (constants.%I.type.1d2)] +// CHECK:STDOUT: %I_where.type.loc8_39.1: type = facet_type <@I, @I(%T.as_type.loc8_39.1) where constants.%impl.elem0.21c = constants.%empty_tuple.type> [symbolic = %I_where.type.loc8_39.1 (constants.%I_where.type.3f6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -722,9 +759,9 @@ fn F(T:! L where C(.W) impls Z(.Self) and .Self impls M) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(%T.loc12_7.2: %I_where.type.4b7) { -// CHECK:STDOUT: %T.patt.loc12_7.2: %pattern_type.021 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_7.2 (constants.%T.patt.e6f)] -// CHECK:STDOUT: %T.loc12_7.1: %I_where.type.4b7 = symbolic_binding T, 0 [symbolic = %T.loc12_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: generic fn @G(%T.loc12_7.2: %I_where.type.6d9) { +// CHECK:STDOUT: %T.patt.loc12_7.2: %pattern_type.4af = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_7.2 (constants.%T.patt.bfa)] +// CHECK:STDOUT: %T.loc12_7.1: %I_where.type.6d9 = symbolic_binding T, 0 [symbolic = %T.loc12_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %T.as_type.loc12_47.1: type = facet_access_type %T.loc12_7.1 [symbolic = %T.as_type.loc12_47.1 (constants.%T.as_type)] // CHECK:STDOUT: %facet_value.loc12_47.1: %type = facet_value %T.as_type.loc12_47.1, () [symbolic = %facet_value.loc12_47.1 (constants.%facet_value)] // CHECK:STDOUT: @@ -748,34 +785,50 @@ fn F(T:! L where C(.W) impls Z(.Self) and .Self impls M) { // CHECK:STDOUT: // CHECK:STDOUT: specific @I.WithSelf(constants.%T.67d, constants.%Self.191) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @I(constants.%.Self.as_type.246) { +// CHECK:STDOUT: specific @I(constants.%.Self.frozen.as_type.bce) { // CHECK:STDOUT: %T.patt.loc4_14.2 => constants.%T.patt.d47 -// CHECK:STDOUT: %T.loc4_14.1 => constants.%.Self.as_type.246 +// CHECK:STDOUT: %T.loc4_14.1 => constants.%.Self.frozen.as_type.bce // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.f3d -// CHECK:STDOUT: %Self.loc4_23.2 => constants.%Self.24d +// CHECK:STDOUT: %I.type => constants.%I.type.0e8 +// CHECK:STDOUT: %Self.loc4_23.2 => constants.%Self.a53 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.as_type.246, constants.%Self.191) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen.as_type.bce, constants.%Self.191) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T => constants.%.Self.as_type.246 -// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.ea7 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.c72 +// CHECK:STDOUT: %T => constants.%.Self.frozen.as_type.bce +// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.96e +// CHECK:STDOUT: %assoc0 => constants.%assoc0.cab // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.as_type.246, constants.%.Self.0f0) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen.as_type.bce, constants.%.Self.frozen.edc) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T => constants.%.Self.as_type.246 -// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.ea7 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.c72 +// CHECK:STDOUT: %T => constants.%.Self.frozen.as_type.bce +// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.96e +// CHECK:STDOUT: %assoc0 => constants.%assoc0.cab // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.as_type.246, constants.%T.8c8) { +// CHECK:STDOUT: specific @I(constants.%.Self.as_type) { +// CHECK:STDOUT: %T.patt.loc4_14.2 => constants.%T.patt.d47 +// CHECK:STDOUT: %T.loc4_14.1 => constants.%.Self.as_type +// CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T => constants.%.Self.as_type.246 -// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.ea7 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.c72 +// CHECK:STDOUT: %I.type => constants.%I.type.a4e +// CHECK:STDOUT: %Self.loc4_23.2 => constants.%Self.6fd +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.as_type, constants.%Self.191) { +// CHECK:STDOUT: !definition: +// CHECK:STDOUT: %T => constants.%.Self.as_type +// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.901 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.267 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.as_type, constants.%T.fb1) { +// CHECK:STDOUT: !definition: +// CHECK:STDOUT: %T => constants.%.Self.as_type +// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.901 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.267 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T.as_type) { @@ -783,25 +836,25 @@ fn F(T:! L where C(.W) impls Z(.Self) and .Self impls M) { // CHECK:STDOUT: %T.loc4_14.1 => constants.%T.as_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.as_type.246, constants.%I.facet) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.as_type, constants.%I.facet) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T => constants.%.Self.as_type.246 -// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.ea7 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.c72 +// CHECK:STDOUT: %T => constants.%.Self.as_type +// CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.901 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.267 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T.8c8) { -// CHECK:STDOUT: %T.patt.loc8_7.2 => constants.%T.patt.e6f -// CHECK:STDOUT: %T.loc8_7.1 => constants.%T.8c8 +// CHECK:STDOUT: specific @F(constants.%T.fb1) { +// CHECK:STDOUT: %T.patt.loc8_7.2 => constants.%T.patt.bfa +// CHECK:STDOUT: %T.loc8_7.1 => constants.%T.fb1 // CHECK:STDOUT: %T.as_type.loc8_39.1 => constants.%T.as_type // CHECK:STDOUT: %facet_value.loc8_39.1 => constants.%facet_value -// CHECK:STDOUT: %I.type.loc8_39.1 => constants.%I.type.a52 -// CHECK:STDOUT: %I_where.type.loc8_39.1 => constants.%I_where.type.e53 +// CHECK:STDOUT: %I.type.loc8_39.1 => constants.%I.type.1d2 +// CHECK:STDOUT: %I_where.type.loc8_39.1 => constants.%I_where.type.3f6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%T.8c8) { -// CHECK:STDOUT: %T.patt.loc12_7.2 => constants.%T.patt.e6f -// CHECK:STDOUT: %T.loc12_7.1 => constants.%T.8c8 +// CHECK:STDOUT: specific @G(constants.%T.fb1) { +// CHECK:STDOUT: %T.patt.loc12_7.2 => constants.%T.patt.bfa +// CHECK:STDOUT: %T.loc12_7.1 => constants.%T.fb1 // CHECK:STDOUT: %T.as_type.loc12_47.1 => constants.%T.as_type // CHECK:STDOUT: %facet_value.loc12_47.1 => constants.%facet_value // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/facet/require_import.carbon b/toolchain/check/testdata/facet/require_import.carbon index 3f9aa130727c..24a4bf1e2a68 100644 --- a/toolchain/check/testdata/facet/require_import.carbon +++ b/toolchain/check/testdata/facet/require_import.carbon @@ -54,7 +54,7 @@ fn F(B:! Y) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %X.type: type = facet_type <@X> [concrete] // CHECK:STDOUT: %Self.f45: %X.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.190: type = facet_access_type %Self.f45 [symbolic] @@ -138,12 +138,12 @@ fn F(B:! Y) { // CHECK:STDOUT: %B.patt.loc4_21.1: %pattern_type.cfb = symbolic_binding_pattern B, 1 [symbolic = %B.patt.loc4_21.2 (constants.%B.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_10: type = splice_block %X.ref [concrete = constants.%X.type] { -// CHECK:STDOUT: %.Self.loc4_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [concrete = constants.%X.type] // CHECK:STDOUT: } // CHECK:STDOUT: %A.loc4_7.2: %X.type = symbolic_binding A, 0 [symbolic = %A.loc4_7.1 (constants.%A)] // CHECK:STDOUT: %.loc4_24: type = splice_block %Y.ref [concrete = constants.%Y.type] { -// CHECK:STDOUT: %.Self.loc4_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%Main.Y [concrete = constants.%Y.type] // CHECK:STDOUT: } // CHECK:STDOUT: %B.loc4_21.2: %Y.type = symbolic_binding B, 1 [symbolic = %B.loc4_21.1 (constants.%B)] diff --git a/toolchain/check/testdata/facet/self_in_interface_param.carbon b/toolchain/check/testdata/facet/self_in_interface_param.carbon index 9ca09eeea459..5e2748bc4c17 100644 --- a/toolchain/check/testdata/facet/self_in_interface_param.carbon +++ b/toolchain/check/testdata/facet/self_in_interface_param.carbon @@ -26,28 +26,40 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %I.type.335: type = generic_interface_type @I [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %I.generic: %I.type.335 = struct_value () [concrete] -// CHECK:STDOUT: %.Self.as_type.246: type = facet_access_type %.Self.c39 [symbolic_self] -// CHECK:STDOUT: %I.type.f3d: type = facet_type <@I, @I(%.Self.as_type.246)> [symbolic_self] -// CHECK:STDOUT: %.Self.0f0: %I.type.f3d = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %I.assoc_type.ea7: type = assoc_entity_type @I, @I(%.Self.as_type.246) [symbolic_self] -// CHECK:STDOUT: %assoc0.c72: %I.assoc_type.ea7 = assoc_entity element0, @I.WithSelf.%I1 [symbolic_self] -// CHECK:STDOUT: %.Self.as_type.a1c: type = facet_access_type %.Self.0f0 [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness.67f: = lookup_impl_witness %.Self.0f0, @I, @I(%.Self.as_type.246) [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness.67f, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.bce: type = facet_access_type %.Self.frozen.197 [symbolic_self] +// CHECK:STDOUT: %I.type.0e8: type = facet_type <@I, @I(%.Self.frozen.as_type.bce)> [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.edc: %I.type.0e8 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.assoc_type.96e: type = assoc_entity_type @I, @I(%.Self.frozen.as_type.bce) [symbolic_self] +// CHECK:STDOUT: %assoc0.cab: %I.assoc_type.96e = assoc_entity element0, @I.WithSelf.%I1 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.7bb: type = facet_access_type %.Self.frozen.edc [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.d6e: = lookup_impl_witness %.Self.frozen.edc, @I, @I(%.Self.frozen.as_type.bce) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.14f: type = impl_witness_access %I.lookup_impl_witness.d6e, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %I_where.type.4b7: type = facet_type <@I, @I(%.Self.as_type.246) where %impl.elem0 = %empty_tuple.type> [symbolic_self] -// CHECK:STDOUT: %pattern_type.021: type = pattern_type %I_where.type.4b7 [symbolic_self] -// CHECK:STDOUT: %T.patt.e6f: %pattern_type.021 = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %T.8c8: %I_where.type.4b7 = symbolic_binding T, 0 [symbolic] -// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.8c8 [symbolic] +// CHECK:STDOUT: %.Self.e0b: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.e0b [symbolic_self] +// CHECK:STDOUT: %I.type.a4e: type = facet_type <@I, @I(%.Self.as_type)> [symbolic_self] +// CHECK:STDOUT: %.Self.b30: %I.type.0e8 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.eea: = lookup_impl_witness %.Self.b30, @I, @I(%.Self.as_type) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.439: type = impl_witness_access %I.lookup_impl_witness.eea, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type.760: type = facet_type <@I, @I(%.Self.as_type) where %impl.elem0.439 = %empty_tuple.type> [symbolic_self] +// CHECK:STDOUT: %.Self.df8: %I.type.a4e = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.0d5: = lookup_impl_witness %.Self.df8, @I, @I(%.Self.as_type) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.21c: type = impl_witness_access %I.lookup_impl_witness.0d5, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type.6d9: type = facet_type <@I, @I(%.Self.as_type) where %impl.elem0.21c = %empty_tuple.type> [symbolic_self] +// CHECK:STDOUT: %pattern_type.4af: type = pattern_type %I_where.type.6d9 [symbolic_self] +// CHECK:STDOUT: %T.patt.bfa: %pattern_type.4af = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.fb1: %I_where.type.6d9 = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %I.assoc_type.901: type = assoc_entity_type @I, @I(%.Self.as_type) [symbolic_self] +// CHECK:STDOUT: %assoc0.267: %I.assoc_type.901 = assoc_entity element0, @I.WithSelf.%I1 [symbolic_self] +// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.fb1 [symbolic] // CHECK:STDOUT: %facet_value: %type = facet_value %T.as_type, () [symbolic] -// CHECK:STDOUT: %I.type.a52: type = facet_type <@I, @I(%T.as_type)> [symbolic] -// CHECK:STDOUT: %I_where.type.e53: type = facet_type <@I, @I(%T.as_type) where %impl.elem0 = %empty_tuple.type> [symbolic] -// CHECK:STDOUT: %I.lookup_impl_witness.506: = lookup_impl_witness %T.8c8, @I, @I(%T.as_type) [symbolic] +// CHECK:STDOUT: %I.type.1d2: type = facet_type <@I, @I(%T.as_type)> [symbolic] +// CHECK:STDOUT: %I_where.type.3f6: type = facet_type <@I, @I(%T.as_type) where %impl.elem0.21c = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %I.lookup_impl_witness.962: = lookup_impl_witness %T.fb1, @I, @I(%T.as_type) [symbolic] // CHECK:STDOUT: %.262: Core.Form = init_form %empty_tuple.type [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete] @@ -58,61 +70,73 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %T.patt.loc18_7.1: %pattern_type.021 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc18_7.2 (constants.%T.patt.e6f)] +// CHECK:STDOUT: %T.patt.loc18_7.1: %pattern_type.4af = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc18_7.2 (constants.%T.patt.bfa)] // CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern [concrete = constants.%return.param_patt] // CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern %return.param_patt, %impl.elem0.loc18_39 [concrete = constants.%return.patt] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: %I_where.type.4b7 = name_ref T, %T.loc18_7.2 [symbolic = %T.loc18_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: %T.ref: %I_where.type.6d9 = name_ref T, %T.loc18_7.2 [symbolic = %T.loc18_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %T.as_type.loc18_39.2: type = facet_access_type %T.ref [symbolic = %T.as_type.loc18_39.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc18_39.1: type = converted %T.ref, %T.as_type.loc18_39.2 [symbolic = %T.as_type.loc18_39.1 (constants.%T.as_type)] -// CHECK:STDOUT: %.loc18_39.2: %I.assoc_type.ea7 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type.246, constants.%T.8c8) [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %I1.ref.loc18_39: %I.assoc_type.ea7 = name_ref I1, %.loc18_39.2 [symbolic_self = constants.%assoc0.c72] +// CHECK:STDOUT: %.loc18_39.2: %I.assoc_type.901 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type, constants.%T.fb1) [symbolic_self = constants.%assoc0.267] +// CHECK:STDOUT: %I1.ref.loc18_39: %I.assoc_type.901 = name_ref I1, %.loc18_39.2 [symbolic_self = constants.%assoc0.267] // CHECK:STDOUT: %facet_value.loc18_39.2: %type = facet_value constants.%T.as_type, () [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] // CHECK:STDOUT: %.loc18_39.3: %type = converted constants.%T.as_type, %facet_value.loc18_39.2 [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %I.type.loc18_39.2: type = facet_type <@I, @I(constants.%T.as_type)> [symbolic = %I.type.loc18_39.1 (constants.%I.type.a52)] -// CHECK:STDOUT: %T.as_type.loc18_39.3: type = facet_access_type constants.%T.8c8 [symbolic = %T.as_type.loc18_39.1 (constants.%T.as_type)] +// CHECK:STDOUT: %I.type.loc18_39.2: type = facet_type <@I, @I(constants.%T.as_type)> [symbolic = %I.type.loc18_39.1 (constants.%I.type.1d2)] +// CHECK:STDOUT: %T.as_type.loc18_39.3: type = facet_access_type constants.%T.fb1 [symbolic = %T.as_type.loc18_39.1 (constants.%T.as_type)] // CHECK:STDOUT: %facet_value.loc18_39.3: %type = facet_value %T.as_type.loc18_39.3, () [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %.loc18_39.4: %type = converted constants.%T.8c8, %facet_value.loc18_39.3 [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %I_where.type.loc18_39.2: type = facet_type <@I, @I(constants.%T.as_type) where constants.%impl.elem0 = constants.%empty_tuple.type> [symbolic = %I_where.type.loc18_39.1 (constants.%I_where.type.e53)] -// CHECK:STDOUT: %T.as_type.loc18_39.4: type = facet_access_type constants.%T.8c8 [symbolic = %T.as_type.loc18_39.1 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc18_39.4: %type = converted constants.%T.fb1, %facet_value.loc18_39.3 [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] +// CHECK:STDOUT: %I_where.type.loc18_39.2: type = facet_type <@I, @I(constants.%T.as_type) where constants.%impl.elem0.21c = constants.%empty_tuple.type> [symbolic = %I_where.type.loc18_39.1 (constants.%I_where.type.3f6)] +// CHECK:STDOUT: %T.as_type.loc18_39.4: type = facet_access_type constants.%T.fb1 [symbolic = %T.as_type.loc18_39.1 (constants.%T.as_type)] // CHECK:STDOUT: %facet_value.loc18_39.4: %type = facet_value %T.as_type.loc18_39.4, () [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %.loc18_39.5: %type = converted constants.%T.8c8, %facet_value.loc18_39.4 [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %impl.elem0.loc18_39: type = impl_witness_access constants.%I.lookup_impl_witness.506, element0 [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc18_39.5: %type = converted constants.%T.fb1, %facet_value.loc18_39.4 [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] +// CHECK:STDOUT: %impl.elem0.loc18_39: type = impl_witness_access constants.%I.lookup_impl_witness.962, element0 [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc18_39.6: Core.Form = init_form %impl.elem0.loc18_39 [concrete = constants.%.262] -// CHECK:STDOUT: %.loc18_19.1: type = splice_block %.loc18_19.2 [symbolic_self = constants.%I_where.type.4b7] { -// CHECK:STDOUT: %.Self.loc18_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc18_19.1: type = splice_block %.loc18_19.3 [symbolic_self = constants.%I_where.type.6d9] { +// CHECK:STDOUT: %.Self.frozen.loc18_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic] -// CHECK:STDOUT: %.Self.ref.loc18_12: %type = name_ref .Self, %.Self.loc18_7 [symbolic_self = constants.%.Self.c39] -// CHECK:STDOUT: %.Self.as_type.loc18_17: type = facet_access_type %.Self.ref.loc18_12 [symbolic_self = constants.%.Self.as_type.246] -// CHECK:STDOUT: %.loc18_17: type = converted %.Self.ref.loc18_12, %.Self.as_type.loc18_17 [symbolic_self = constants.%.Self.as_type.246] -// CHECK:STDOUT: %I.type.loc18_17: type = facet_type <@I, @I(constants.%.Self.as_type.246)> [symbolic_self = constants.%I.type.f3d] -// CHECK:STDOUT: %.Self.loc18_19: %I.type.f3d = symbolic_binding .Self [symbolic_self = constants.%.Self.0f0] -// CHECK:STDOUT: %.Self.ref.loc18_25: %I.type.f3d = name_ref .Self, %.Self.loc18_19 [symbolic_self = constants.%.Self.0f0] -// CHECK:STDOUT: %.Self.as_type.loc18_25: type = facet_access_type %.Self.ref.loc18_25 [symbolic_self = constants.%.Self.as_type.a1c] -// CHECK:STDOUT: %.loc18_25.1: type = converted %.Self.ref.loc18_25, %.Self.as_type.loc18_25 [symbolic_self = constants.%.Self.as_type.a1c] -// CHECK:STDOUT: %.loc18_25.2: %I.assoc_type.ea7 = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.as_type.246, constants.%.Self.0f0) [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %I1.ref.loc18_25: %I.assoc_type.ea7 = name_ref I1, %.loc18_25.2 [symbolic_self = constants.%assoc0.c72] -// CHECK:STDOUT: %impl.elem0.loc18_25: type = impl_witness_access constants.%I.lookup_impl_witness.67f, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %.Self.ref.loc18_12: %type = name_ref .Self, %.Self.frozen.loc18_7 [symbolic_self = constants.%.Self.frozen.197] +// CHECK:STDOUT: %.Self.as_type.loc18_17: type = facet_access_type %.Self.ref.loc18_12 [symbolic_self = constants.%.Self.frozen.as_type.bce] +// CHECK:STDOUT: %.loc18_17: type = converted %.Self.ref.loc18_12, %.Self.as_type.loc18_17 [symbolic_self = constants.%.Self.frozen.as_type.bce] +// CHECK:STDOUT: %I.type.loc18_17.1: type = facet_type <@I, @I(constants.%.Self.frozen.as_type.bce)> [symbolic_self = constants.%I.type.0e8] +// CHECK:STDOUT: %.Self.frozen.loc18_19: %I.type.0e8 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.edc] +// CHECK:STDOUT: %base_facet_type.loc18_19.1 = requirement_base_facet_type %I.type.loc18_17.1 [concrete] +// CHECK:STDOUT: %.Self.ref.loc18_25: %I.type.0e8 = name_ref .Self, %.Self.frozen.loc18_19 [symbolic_self = constants.%.Self.frozen.edc] +// CHECK:STDOUT: %.Self.as_type.loc18_25: type = facet_access_type %.Self.ref.loc18_25 [symbolic_self = constants.%.Self.frozen.as_type.7bb] +// CHECK:STDOUT: %.loc18_25.1: type = converted %.Self.ref.loc18_25, %.Self.as_type.loc18_25 [symbolic_self = constants.%.Self.frozen.as_type.7bb] +// CHECK:STDOUT: %.loc18_25.2: %I.assoc_type.96e = specific_constant @I1.%assoc0, @I.WithSelf(constants.%.Self.frozen.as_type.bce, constants.%.Self.frozen.edc) [symbolic_self = constants.%assoc0.cab] +// CHECK:STDOUT: %I1.ref.loc18_25: %I.assoc_type.96e = name_ref I1, %.loc18_25.2 [symbolic_self = constants.%assoc0.cab] +// CHECK:STDOUT: %impl.elem0.loc18_25.1: type = impl_witness_access constants.%I.lookup_impl_witness.d6e, element0 [symbolic_self = constants.%impl.elem0.14f] // CHECK:STDOUT: %.loc18_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_32.2: type = converted %.loc18_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc18_19.2: type = where_expr [symbolic_self = constants.%I_where.type.4b7] { -// CHECK:STDOUT: requirement_base_facet_type %I.type.loc18_17 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc18_25, %.loc18_32.2 +// CHECK:STDOUT: %rewrite.loc18_29.1 = requirement_rewrite %impl.elem0.loc18_25.1, %.loc18_32.2 [concrete] +// CHECK:STDOUT: %I.type.loc18_17.2: type = facet_type <@I, @I(constants.%.Self.as_type)> [symbolic_self = constants.%I.type.a4e] +// CHECK:STDOUT: %base_facet_type.loc18_19.2 = requirement_base_facet_type %I.type.loc18_17.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc18_25.2: type = impl_witness_access constants.%I.lookup_impl_witness.eea, element0 [symbolic_self = constants.%impl.elem0.439] +// CHECK:STDOUT: %rewrite.loc18_29.2 = requirement_rewrite %impl.elem0.loc18_25.2, %.loc18_32.2 [concrete] +// CHECK:STDOUT: %.loc18_19.2: type = where_expr [symbolic_self = constants.%I_where.type.760] { +// CHECK:STDOUT: %base_facet_type.loc18_19.2 = requirement_base_facet_type %I.type.loc18_17.2 [concrete] +// CHECK:STDOUT: %rewrite.loc18_29.2 = requirement_rewrite %impl.elem0.loc18_25.2, %.loc18_32.2 [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: %impl.elem0.loc18_25.3: type = impl_witness_access constants.%I.lookup_impl_witness.0d5, element0 [symbolic_self = constants.%impl.elem0.21c] +// CHECK:STDOUT: %rewrite.loc18_29.3 = requirement_rewrite %impl.elem0.loc18_25.3, %.loc18_32.2 [concrete] +// CHECK:STDOUT: %.loc18_19.3: type = where_expr [symbolic_self = constants.%I_where.type.6d9] { +// CHECK:STDOUT: %base_facet_type.loc18_19.2 = requirement_base_facet_type %I.type.loc18_17.2 [concrete] +// CHECK:STDOUT: %rewrite.loc18_29.3 = requirement_rewrite %impl.elem0.loc18_25.3, %.loc18_32.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc18_7.2: %I_where.type.4b7 = symbolic_binding T, 0 [symbolic = %T.loc18_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: %T.loc18_7.2: %I_where.type.6d9 = symbolic_binding T, 0 [symbolic = %T.loc18_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc18_7.2: %I_where.type.4b7) { -// CHECK:STDOUT: %T.patt.loc18_7.2: %pattern_type.021 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc18_7.2 (constants.%T.patt.e6f)] -// CHECK:STDOUT: %T.loc18_7.1: %I_where.type.4b7 = symbolic_binding T, 0 [symbolic = %T.loc18_7.1 (constants.%T.8c8)] +// CHECK:STDOUT: generic fn @F(%T.loc18_7.2: %I_where.type.6d9) { +// CHECK:STDOUT: %T.patt.loc18_7.2: %pattern_type.4af = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc18_7.2 (constants.%T.patt.bfa)] +// CHECK:STDOUT: %T.loc18_7.1: %I_where.type.6d9 = symbolic_binding T, 0 [symbolic = %T.loc18_7.1 (constants.%T.fb1)] // CHECK:STDOUT: %T.as_type.loc18_39.1: type = facet_access_type %T.loc18_7.1 [symbolic = %T.as_type.loc18_39.1 (constants.%T.as_type)] // CHECK:STDOUT: %facet_value.loc18_39.1: %type = facet_value %T.as_type.loc18_39.1, () [symbolic = %facet_value.loc18_39.1 (constants.%facet_value)] -// CHECK:STDOUT: %I.type.loc18_39.1: type = facet_type <@I, @I(%T.as_type.loc18_39.1)> [symbolic = %I.type.loc18_39.1 (constants.%I.type.a52)] -// CHECK:STDOUT: %I_where.type.loc18_39.1: type = facet_type <@I, @I(%T.as_type.loc18_39.1) where constants.%impl.elem0 = constants.%empty_tuple.type> [symbolic = %I_where.type.loc18_39.1 (constants.%I_where.type.e53)] +// CHECK:STDOUT: %I.type.loc18_39.1: type = facet_type <@I, @I(%T.as_type.loc18_39.1)> [symbolic = %I.type.loc18_39.1 (constants.%I.type.1d2)] +// CHECK:STDOUT: %I_where.type.loc18_39.1: type = facet_type <@I, @I(%T.as_type.loc18_39.1) where constants.%impl.elem0.21c = constants.%empty_tuple.type> [symbolic = %I_where.type.loc18_39.1 (constants.%I_where.type.3f6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -127,12 +151,12 @@ fn G(_:! I(.Self) where .I1 = ()) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T.8c8) { -// CHECK:STDOUT: %T.patt.loc18_7.2 => constants.%T.patt.e6f -// CHECK:STDOUT: %T.loc18_7.1 => constants.%T.8c8 +// CHECK:STDOUT: specific @F(constants.%T.fb1) { +// CHECK:STDOUT: %T.patt.loc18_7.2 => constants.%T.patt.bfa +// CHECK:STDOUT: %T.loc18_7.1 => constants.%T.fb1 // CHECK:STDOUT: %T.as_type.loc18_39.1 => constants.%T.as_type // CHECK:STDOUT: %facet_value.loc18_39.1 => constants.%facet_value -// CHECK:STDOUT: %I.type.loc18_39.1 => constants.%I.type.a52 -// CHECK:STDOUT: %I_where.type.loc18_39.1 => constants.%I_where.type.e53 +// CHECK:STDOUT: %I.type.loc18_39.1 => constants.%I.type.1d2 +// CHECK:STDOUT: %I_where.type.loc18_39.1 => constants.%I_where.type.3f6 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/facet/validate_rewrite_constraints.carbon b/toolchain/check/testdata/facet/validate_rewrite_constraints.carbon index a7eaa721d7a6..8a6af02f9d67 100644 --- a/toolchain/check/testdata/facet/validate_rewrite_constraints.carbon +++ b/toolchain/check/testdata/facet/validate_rewrite_constraints.carbon @@ -1380,41 +1380,41 @@ fn G(T:! N) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] -// CHECK:STDOUT: %.Self.94e: %Z.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Z.lookup_impl_witness.e2b: = lookup_impl_witness %.Self.94e, @Z [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %Z.lookup_impl_witness.e2b, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Z_where.type.767: type = facet_type <@Z where %impl.elem0 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.Self: %Z.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Z.lookup_impl_witness.b8d: = lookup_impl_witness %.Self, @Z [symbolic_self] +// CHECK:STDOUT: %impl.elem0.555: type = impl_witness_access %Z.lookup_impl_witness.b8d, element0 [symbolic_self] +// CHECK:STDOUT: %Z_where.type.7b9: type = facet_type <@Z where %impl.elem0.555 = %empty_struct_type> [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %Z.lookup_impl_witness.e2b, element1 [symbolic_self] -// CHECK:STDOUT: %Z_where.type.a88: type = facet_type <@Z where %impl.elem0 = %empty_struct_type and %impl.elem1 = %empty_struct_type> [concrete] -// CHECK:STDOUT: %pattern_type.d22: type = pattern_type %Z_where.type.a88 [concrete] -// CHECK:STDOUT: %T.patt: %pattern_type.d22 = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %T: %Z_where.type.a88 = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %impl.elem1.025: type = impl_witness_access %Z.lookup_impl_witness.b8d, element1 [symbolic_self] +// CHECK:STDOUT: %Z_where.type.c91: type = facet_type <@Z where %impl.elem0.555 = %empty_struct_type and %impl.elem1.025 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %pattern_type.81e: type = pattern_type %Z_where.type.c91 [concrete] +// CHECK:STDOUT: %T.patt: %pattern_type.81e = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T: %Z_where.type.c91 = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] -// CHECK:STDOUT: %Z.lookup_impl_witness.d70: = lookup_impl_witness %T, @Z [symbolic] -// CHECK:STDOUT: %facet_value: %Z_where.type.767 = facet_value %T.as_type, (%Z.lookup_impl_witness.d70) [symbolic] +// CHECK:STDOUT: %Z.lookup_impl_witness.9fe: = lookup_impl_witness %T, @Z [symbolic] +// CHECK:STDOUT: %facet_value: %Z_where.type.7b9 = facet_value %T.as_type, (%Z.lookup_impl_witness.9fe) [symbolic] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%facet_value) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(%T.loc10_7.2: %Z_where.type.a88) { +// CHECK:STDOUT: generic fn @G(%T.loc10_7.2: %Z_where.type.c91) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T.as_type.loc14_6.2: type = facet_access_type %T.loc10_7.1 [symbolic = %T.as_type.loc14_6.2 (constants.%T.as_type)] -// CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %T.loc10_7.1, @Z [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness.d70)] -// CHECK:STDOUT: %facet_value.loc14_6.2: %Z_where.type.767 = facet_value %T.as_type.loc14_6.2, (%Z.lookup_impl_witness) [symbolic = %facet_value.loc14_6.2 (constants.%facet_value)] +// CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %T.loc10_7.1, @Z [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness.9fe)] +// CHECK:STDOUT: %facet_value.loc14_6.2: %Z_where.type.7b9 = facet_value %T.as_type.loc14_6.2, (%Z.lookup_impl_witness) [symbolic = %facet_value.loc14_6.2 (constants.%facet_value)] // CHECK:STDOUT: %F.specific_fn.loc14_3.2: = specific_function constants.%F, @F(%facet_value.loc14_6.2) [symbolic = %F.specific_fn.loc14_3.2 (constants.%F.specific_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %T.ref: %Z_where.type.a88 = name_ref T, %T.loc10_7.2 [symbolic = %T.loc10_7.1 (constants.%T)] +// CHECK:STDOUT: %T.ref: %Z_where.type.c91 = name_ref T, %T.loc10_7.2 [symbolic = %T.loc10_7.1 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc14_6.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc14_6.2 (constants.%T.as_type)] -// CHECK:STDOUT: %facet_value.loc14_6.1: %Z_where.type.767 = facet_value %T.as_type.loc14_6.1, (constants.%Z.lookup_impl_witness.d70) [symbolic = %facet_value.loc14_6.2 (constants.%facet_value)] -// CHECK:STDOUT: %.loc14: %Z_where.type.767 = converted %T.ref, %facet_value.loc14_6.1 [symbolic = %facet_value.loc14_6.2 (constants.%facet_value)] +// CHECK:STDOUT: %facet_value.loc14_6.1: %Z_where.type.7b9 = facet_value %T.as_type.loc14_6.1, (constants.%Z.lookup_impl_witness.9fe) [symbolic = %facet_value.loc14_6.2 (constants.%facet_value)] +// CHECK:STDOUT: %.loc14: %Z_where.type.7b9 = converted %T.ref, %facet_value.loc14_6.1 [symbolic = %facet_value.loc14_6.2 (constants.%facet_value)] // CHECK:STDOUT: %F.specific_fn.loc14_3.1: = specific_function %F.ref, @F(constants.%facet_value) [symbolic = %F.specific_fn.loc14_3.2 (constants.%F.specific_fn)] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn.loc14_3.1() // CHECK:STDOUT: diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index 68b9e7323a50..9e63712b6a71 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -54,7 +54,7 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] @@ -88,16 +88,16 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %Optional.Some.2a0: %Optional.Some.type.304 = struct_value () [symbolic] // CHECK:STDOUT: %Optional.None.type.bdc: type = fn_type @Optional.None, @Optional(%T.220) [symbolic] // CHECK:STDOUT: %Optional.None.01e: %Optional.None.type.bdc = struct_value () [symbolic] -// CHECK:STDOUT: %.Self.35d: %Iterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.35d [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.bdd: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.bdd [symbolic_self] // CHECK:STDOUT: %Iterate.assoc_type: type = assoc_entity_type @Iterate [concrete] // CHECK:STDOUT: %assoc1.c91: %Iterate.assoc_type = assoc_entity element1, imports.%Core.import_ref.dd9 [concrete] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.b37: = lookup_impl_witness %.Self.35d, @Iterate [symbolic_self] -// CHECK:STDOUT: %impl.elem1.543: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.b37, element1 [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.98d: = lookup_impl_witness %.Self.frozen.bdd, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem1.990: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.98d, element1 [symbolic_self] // CHECK:STDOUT: %Destroy.lookup_impl_witness.173: = lookup_impl_witness %Int.67af24.1, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.7bb: %Destroy.type = facet_value %Int.67af24.1, (%Destroy.lookup_impl_witness.173) [symbolic] // CHECK:STDOUT: %assoc0.0f0: %Iterate.assoc_type = assoc_entity element0, imports.%Core.import_ref.ebd7 [concrete] -// CHECK:STDOUT: %impl.elem0.903: %facet_type.f48 = impl_witness_access %Iterate.lookup_impl_witness.b37, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem0.94d: %facet_type.f48 = impl_witness_access %Iterate.lookup_impl_witness.98d, element0 [symbolic_self] // CHECK:STDOUT: %require_complete.4dfb92.1: = require_complete_type %Int.67af24.1 [symbolic] // 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] @@ -106,9 +106,13 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %Copy.lookup_impl_witness.df6: = lookup_impl_witness %Int.67af24.1, @Copy [symbolic] // CHECK:STDOUT: %.a53: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic] // CHECK:STDOUT: %facet_value: %facet_type.f48 = facet_value %Int.67af24.1, (%Destroy.lookup_impl_witness.173, %Copy.lookup_impl_witness.df6) [symbolic] -// CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where %impl.elem1.543 = %Destroy.facet.7bb and %impl.elem0.903 = %facet_value> [symbolic] +// CHECK:STDOUT: %.Self.500: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.1d8: = lookup_impl_witness %.Self.500, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem1.6f4: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.1d8, element1 [symbolic_self] +// CHECK:STDOUT: %impl.elem0.294: %facet_type.f48 = impl_witness_access %Iterate.lookup_impl_witness.1d8, element0 [symbolic_self] +// CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where %impl.elem1.6f4 = %Destroy.facet.7bb and %impl.elem0.294 = %facet_value> [symbolic] // CHECK:STDOUT: %Iterate.impl_witness: = impl_witness @IntRange.as.Iterate.impl.%Iterate.impl_witness_table, @IntRange.as.Iterate.impl(%N) [symbolic] -// CHECK:STDOUT: %require_complete.975: = require_complete_type %Iterate_where.type [symbolic] +// CHECK:STDOUT: %require_complete.466: = require_complete_type %Iterate_where.type [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] // CHECK:STDOUT: %return.patt.434: %pattern_type.142cb7.1 = return_slot_pattern %return.param_patt.5a2679.1, %Int.67af24.1 [symbolic] @@ -119,7 +123,7 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %cursor.param_patt.328: %pattern_type.833 = value_param_pattern [symbolic] // CHECK:STDOUT: %cursor.patt.652: %pattern_type.833 = at_binding_pattern cursor, %cursor.param_patt.328 [symbolic] // CHECK:STDOUT: %OptionalStorage.lookup_impl_witness.a32: = lookup_impl_witness %Int.67af24.1, @OptionalStorage [symbolic] -// CHECK:STDOUT: %.17c: require_specific_def_type = require_specific_def @T.as_type.as.OptionalStorage.impl(%facet_value) [symbolic] +// CHECK:STDOUT: %.3c5: require_specific_def_type = require_specific_def @T.as_type.as.OptionalStorage.impl(%facet_value) [symbolic] // CHECK:STDOUT: %OptionalStorage.facet.b99: %OptionalStorage.type = facet_value %Int.67af24.1, (%OptionalStorage.lookup_impl_witness.a32) [symbolic] // CHECK:STDOUT: %Optional.5ec: type = class_type @Optional, @Optional(%OptionalStorage.facet.b99) [symbolic] // CHECK:STDOUT: %.3f3: Core.Form = init_form %Optional.5ec [symbolic] @@ -292,7 +296,7 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %N.patt.loc4_17.1: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_17.2 (constants.%N.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } @@ -325,11 +329,11 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %.loc9_85.1: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.loc9_85.1 (constants.%.a53)] // 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.543 = %Destroy.facet.loc9_54.1 and constants.%impl.elem0.903 = %facet_value.loc9_85.1> [symbolic = %Iterate_where.type (constants.%Iterate_where.type)] +// CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where constants.%impl.elem1.6f4 = %Destroy.facet.loc9_54.1 and constants.%impl.elem0.294 = %facet_value.loc9_85.1> [symbolic = %Iterate_where.type (constants.%Iterate_where.type)] // 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: -// CHECK:STDOUT: %require_complete: = require_complete_type %Iterate_where.type [symbolic = %require_complete (constants.%require_complete.975)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Iterate_where.type [symbolic = %require_complete (constants.%require_complete.466)] // CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.type: type = fn_type @IntRange.as.Iterate.impl.NewCursor, @IntRange.as.Iterate.impl(%N) [symbolic = %IntRange.as.Iterate.impl.NewCursor.type (constants.%IntRange.as.Iterate.impl.NewCursor.type)] // CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor: @IntRange.as.Iterate.impl.%IntRange.as.Iterate.impl.NewCursor.type (%IntRange.as.Iterate.impl.NewCursor.type) = struct_value () [symbolic = %IntRange.as.Iterate.impl.NewCursor (constants.%IntRange.as.Iterate.impl.NewCursor)] // CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type: type = fn_type @IntRange.as.Iterate.impl.Next, @IntRange.as.Iterate.impl(%N) [symbolic = %IntRange.as.Iterate.impl.Next.type (constants.%IntRange.as.Iterate.impl.Next.type)] @@ -458,33 +462,40 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%IntRange.2c4 [symbolic = %IntRange (constants.%IntRange.2c4)] // CHECK:STDOUT: %Core.ref.loc9_11: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Iterate.ref: type = name_ref Iterate, imports.%Core.Iterate [concrete = constants.%Iterate.type] -// CHECK:STDOUT: %.Self: %Iterate.type = symbolic_binding .Self [symbolic_self = constants.%.Self.35d] -// CHECK:STDOUT: %.Self.ref.loc9_30: %Iterate.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.35d] -// CHECK:STDOUT: %.Self.as_type.loc9_30: type = facet_access_type %.Self.ref.loc9_30 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_30: type = converted %.Self.ref.loc9_30, %.Self.as_type.loc9_30 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %Iterate.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.bdd] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Iterate.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc9_30: %Iterate.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.bdd] +// CHECK:STDOUT: %.Self.as_type.loc9_30: type = facet_access_type %.Self.ref.loc9_30 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_30: type = converted %.Self.ref.loc9_30, %.Self.as_type.loc9_30 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %CursorType.ref: %Iterate.assoc_type = name_ref CursorType, imports.%Core.import_ref.5be [concrete = constants.%assoc1.c91] -// CHECK:STDOUT: %impl.elem1: %Destroy.type = impl_witness_access constants.%Iterate.lookup_impl_witness.b37, element1 [symbolic_self = constants.%impl.elem1.543] +// CHECK:STDOUT: %impl.elem1.loc9_30.1: %Destroy.type = impl_witness_access constants.%Iterate.lookup_impl_witness.98d, element1 [symbolic_self = constants.%impl.elem1.990] // CHECK:STDOUT: %Core.ref.loc9_44: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc9_48: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc9_53: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_17.2 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %Int.loc9_54.2: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_54.1 (constants.%Int.67af24.1)] // CHECK:STDOUT: %Destroy.facet.loc9_54.2: %Destroy.type = facet_value %Int.loc9_54.2, (constants.%Destroy.lookup_impl_witness.173) [symbolic = %Destroy.facet.loc9_54.1 (constants.%Destroy.facet.7bb)] // CHECK:STDOUT: %.loc9_54: %Destroy.type = converted %Int.loc9_54.2, %Destroy.facet.loc9_54.2 [symbolic = %Destroy.facet.loc9_54.1 (constants.%Destroy.facet.7bb)] -// CHECK:STDOUT: %.Self.ref.loc9_60: %Iterate.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.35d] -// CHECK:STDOUT: %.Self.as_type.loc9_60: type = facet_access_type %.Self.ref.loc9_60 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_60: type = converted %.Self.ref.loc9_60, %.Self.as_type.loc9_60 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc9_42.1 = requirement_rewrite %impl.elem1.loc9_30.1, %.loc9_54 [concrete] +// CHECK:STDOUT: %.Self.ref.loc9_60: %Iterate.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.bdd] +// CHECK:STDOUT: %.Self.as_type.loc9_60: type = facet_access_type %.Self.ref.loc9_60 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_60: type = converted %.Self.ref.loc9_60, %.Self.as_type.loc9_60 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %ElementType.ref: %Iterate.assoc_type = name_ref ElementType, imports.%Core.import_ref.96b [concrete = constants.%assoc0.0f0] -// CHECK:STDOUT: %impl.elem0: %facet_type.f48 = impl_witness_access constants.%Iterate.lookup_impl_witness.b37, element0 [symbolic_self = constants.%impl.elem0.903] +// CHECK:STDOUT: %impl.elem0.loc9_60.1: %facet_type.f48 = impl_witness_access constants.%Iterate.lookup_impl_witness.98d, element0 [symbolic_self = constants.%impl.elem0.94d] // CHECK:STDOUT: %Core.ref.loc9_75: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Int.ref.loc9_79: %Int.type = name_ref Int, imports.%Core.Int [concrete = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc9_84: Core.IntLiteral = name_ref N, @IntRange.%N.loc4_17.2 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %Int.loc9_85: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_54.1 (constants.%Int.67af24.1)] // CHECK:STDOUT: %facet_value.loc9_85.2: %facet_type.f48 = facet_value %Int.loc9_85, (constants.%Destroy.lookup_impl_witness.173, constants.%Copy.lookup_impl_witness.df6) [symbolic = %facet_value.loc9_85.1 (constants.%facet_value)] // CHECK:STDOUT: %.loc9_85.2: %facet_type.f48 = converted %Int.loc9_85, %facet_value.loc9_85.2 [symbolic = %facet_value.loc9_85.1 (constants.%facet_value)] +// CHECK:STDOUT: %rewrite.loc9_73.1 = requirement_rewrite %impl.elem0.loc9_60.1, %.loc9_85.2 [concrete] +// CHECK:STDOUT: %impl.elem1.loc9_30.2: %Destroy.type = impl_witness_access constants.%Iterate.lookup_impl_witness.1d8, element1 [symbolic_self = constants.%impl.elem1.6f4] +// CHECK:STDOUT: %rewrite.loc9_42.2 = requirement_rewrite %impl.elem1.loc9_30.2, %.loc9_54 [concrete] +// CHECK:STDOUT: %impl.elem0.loc9_60.2: %facet_type.f48 = impl_witness_access constants.%Iterate.lookup_impl_witness.1d8, element0 [symbolic_self = constants.%impl.elem0.294] +// CHECK:STDOUT: %rewrite.loc9_73.2 = requirement_rewrite %impl.elem0.loc9_60.2, %.loc9_85.2 [concrete] // CHECK:STDOUT: %.loc9_24: type = where_expr [symbolic = %Iterate_where.type (constants.%Iterate_where.type)] { -// CHECK:STDOUT: requirement_base_facet_type %Iterate.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem1, %.loc9_54 -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc9_85.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Iterate.ref [concrete] +// CHECK:STDOUT: %rewrite.loc9_42.2 = requirement_rewrite %impl.elem1.loc9_30.2, %.loc9_54 [concrete] +// CHECK:STDOUT: %rewrite.loc9_73.2 = requirement_rewrite %impl.elem0.loc9_60.2, %.loc9_85.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22: @IntRange.%IntRange.elem (%IntRange.elem.bed) = field_decl start, element0 [concrete] @@ -621,7 +632,7 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Int.loc11_37.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.173)] // CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %Int.loc11_37.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.df6)] // CHECK:STDOUT: %facet_value: %facet_type.f48 = facet_value %Int.loc11_37.1, (%Destroy.lookup_impl_witness, %Copy.lookup_impl_witness) [symbolic = %facet_value (constants.%facet_value)] -// CHECK:STDOUT: %.loc11_69.3: require_specific_def_type = require_specific_def @T.as_type.as.OptionalStorage.impl(%facet_value) [symbolic = %.loc11_69.3 (constants.%.17c)] +// CHECK:STDOUT: %.loc11_69.3: require_specific_def_type = require_specific_def @T.as_type.as.OptionalStorage.impl(%facet_value) [symbolic = %.loc11_69.3 (constants.%.3c5)] // CHECK:STDOUT: %OptionalStorage.lookup_impl_witness: = lookup_impl_witness %Int.loc11_37.1, @OptionalStorage [symbolic = %OptionalStorage.lookup_impl_witness (constants.%OptionalStorage.lookup_impl_witness.a32)] // CHECK:STDOUT: %OptionalStorage.facet.loc11_69.1: %OptionalStorage.type = facet_value %Int.loc11_37.1, (%OptionalStorage.lookup_impl_witness) [symbolic = %OptionalStorage.facet.loc11_69.1 (constants.%OptionalStorage.facet.b99)] // CHECK:STDOUT: %Optional.loc11_69.1: type = class_type @Optional, @Optional(%OptionalStorage.facet.loc11_69.1) [symbolic = %Optional.loc11_69.1 (constants.%Optional.5ec)] @@ -864,7 +875,7 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %Iterate.impl_witness.loc9_87.2 => constants.%Iterate.impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.975 +// CHECK:STDOUT: %require_complete => constants.%require_complete.466 // CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor.type => constants.%IntRange.as.Iterate.impl.NewCursor.type // CHECK:STDOUT: %IntRange.as.Iterate.impl.NewCursor => constants.%IntRange.as.Iterate.impl.NewCursor // CHECK:STDOUT: %IntRange.as.Iterate.impl.Next.type => constants.%IntRange.as.Iterate.impl.Next.type @@ -898,7 +909,7 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%Destroy.lookup_impl_witness.173 // CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.df6 // CHECK:STDOUT: %facet_value => constants.%facet_value -// CHECK:STDOUT: %.loc11_69.3 => constants.%.17c +// CHECK:STDOUT: %.loc11_69.3 => constants.%.3c5 // CHECK:STDOUT: %OptionalStorage.lookup_impl_witness => constants.%OptionalStorage.lookup_impl_witness.a32 // CHECK:STDOUT: %OptionalStorage.facet.loc11_69.1 => constants.%OptionalStorage.facet.b99 // CHECK:STDOUT: %Optional.loc11_69.1 => constants.%Optional.5ec @@ -957,7 +968,7 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %y.patt: %pattern_type.dc0 = symbolic_binding_pattern y, 0 [symbolic] // CHECK:STDOUT: %y: Core.IntLiteral = symbolic_binding y, 0 [symbolic] @@ -1072,7 +1083,7 @@ fn Read(y:! Core.IntLiteral) { // CHECK:STDOUT: %y.patt.loc4_10.1: %pattern_type.dc0 = symbolic_binding_pattern y, 0 [symbolic = %y.patt.loc4_10.2 (constants.%y.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core.048aa3.1 [concrete = imports.%Core.048aa3.1] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/for/basic.carbon b/toolchain/check/testdata/for/basic.carbon index acc669edbdc7..7fb871d2e920 100644 --- a/toolchain/check/testdata/for/basic.carbon +++ b/toolchain/check/testdata/for/basic.carbon @@ -77,8 +77,8 @@ fn Run() { // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.Next.type: type = fn_type @TrivialRange.as.Iterate.impl.Next [concrete] // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.Next: %TrivialRange.as.Iterate.impl.Next.type = struct_value () [concrete] // CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %TrivialRange, (%Iterate.impl_witness) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.b66: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.4f6: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.aba: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.1a8: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.type.de32c1.2: type = fn_type @TrivialRange.as.Iterate.impl.NewCursor.loc6_31.2 [concrete] // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.93de00.2: %TrivialRange.as.Iterate.impl.NewCursor.type.de32c1.2 = struct_value () [concrete] @@ -96,10 +96,10 @@ fn Run() { // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %TrivialRange.val: %TrivialRange = struct_value () [concrete] // CHECK:STDOUT: %.50e: ref %TrivialRange = temporary invalid, %TrivialRange.val [concrete] -// CHECK:STDOUT: %.46f: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.b66, %Iterate.facet [concrete] +// CHECK:STDOUT: %.686: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.aba, %Iterate.facet [concrete] // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.bound.464: = bound_method %.50e, %TrivialRange.as.Iterate.impl.NewCursor.93de00.2 [concrete] // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.NewCursor.bound.410: = bound_method %TrivialRange.val, %TrivialRange.as.Iterate.impl.NewCursor.93de00.1 [concrete] -// CHECK:STDOUT: %.eb2: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.4f6, %Iterate.facet [concrete] +// CHECK:STDOUT: %.6bc: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.1a8, %Iterate.facet [concrete] // CHECK:STDOUT: %TrivialRange.as.Iterate.impl.Next.bound: = bound_method %.50e, %TrivialRange.as.Iterate.impl.Next [concrete] // CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.d37, @Optional.HasValue(%Copy.facet) [concrete] // CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.2aa, @Optional.Get(%Copy.facet) [concrete] @@ -132,7 +132,7 @@ fn Run() { // CHECK:STDOUT: %.loc18_18.3: init %TrivialRange to %.loc18_18.2 = class_init () [concrete = constants.%TrivialRange.val] // CHECK:STDOUT: %.loc18_20.1: init %TrivialRange = converted %.loc18_18.1, %.loc18_18.3 [concrete = constants.%TrivialRange.val] // CHECK:STDOUT: %.loc18_20.2: ref %TrivialRange = temporary %.loc18_18.2, %.loc18_20.1 [concrete = constants.%.50e] -// CHECK:STDOUT: %impl.elem2: %.46f = impl_witness_access constants.%Iterate.impl_witness, element2 [concrete = constants.%TrivialRange.as.Iterate.impl.NewCursor.93de00.2] +// CHECK:STDOUT: %impl.elem2: %.686 = impl_witness_access constants.%Iterate.impl_witness, element2 [concrete = constants.%TrivialRange.as.Iterate.impl.NewCursor.93de00.2] // CHECK:STDOUT: %bound_method.loc18_35.1: = bound_method %.loc18_20.2, %impl.elem2 [concrete = constants.%TrivialRange.as.Iterate.impl.NewCursor.bound.464] // CHECK:STDOUT: %.loc18_20.3: %TrivialRange = acquire_value %.loc18_20.2 [concrete = constants.%TrivialRange.val] // CHECK:STDOUT: %NewCursor.ref: %TrivialRange.as.Iterate.impl.NewCursor.type.de32c1.1 = name_ref NewCursor, @TrivialRange.as.Iterate.impl.%TrivialRange.as.Iterate.impl.NewCursor.decl.loc6_31.1 [concrete = constants.%TrivialRange.as.Iterate.impl.NewCursor.93de00.1] @@ -144,7 +144,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr: %ptr.843 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.eb2 = impl_witness_access constants.%Iterate.impl_witness, element3 [concrete = constants.%TrivialRange.as.Iterate.impl.Next] +// CHECK:STDOUT: %impl.elem3: %.6bc = impl_witness_access constants.%Iterate.impl_witness, element3 [concrete = constants.%TrivialRange.as.Iterate.impl.Next] // CHECK:STDOUT: %bound_method.loc18_35.2: = bound_method %.loc18_20.2, %impl.elem3 [concrete = constants.%TrivialRange.as.Iterate.impl.Next.bound] // CHECK:STDOUT: %.loc18_35.1: ref %Optional.21a = temporary_storage // CHECK:STDOUT: %.loc18_20.4: %TrivialRange = acquire_value %.loc18_20.2 [concrete = constants.%TrivialRange.val] diff --git a/toolchain/check/testdata/for/pattern.carbon b/toolchain/check/testdata/for/pattern.carbon index deb0cb143045..c071838bd8d1 100644 --- a/toolchain/check/testdata/for/pattern.carbon +++ b/toolchain/check/testdata/for/pattern.carbon @@ -146,23 +146,23 @@ fn Run() { // CHECK:STDOUT: %Optional.Get.20c: %Optional.Get.type.e1b = struct_value () [symbolic] // CHECK:STDOUT: %Optional.HasValue.type.224: type = fn_type @Optional.HasValue, @Optional(%T.f84) [symbolic] // CHECK:STDOUT: %Optional.HasValue.c4f: %Optional.HasValue.type.224 = struct_value () [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.cfe: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.0c8: %EmptyRange.as.Iterate.impl.Next.type.cfe = struct_value () [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.647: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.9e2: %EmptyRange.as.Iterate.impl.NewCursor.type.647 = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness.99c: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.529: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.714: %EmptyRange.as.Iterate.impl.NewCursor.type.529 = struct_value () [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.3f6: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.805: %EmptyRange.as.Iterate.impl.Next.type.3f6 = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.de0, (%Iterate.impl_witness.99c) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.1b1: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.b69: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %.ca7: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.1b1, %Iterate.facet [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.714, @EmptyRange.as.Iterate.impl.NewCursor(%Copy.facet) [concrete] -// CHECK:STDOUT: %.9a7: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.b69, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.da3: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.311: %EmptyRange.as.Iterate.impl.Next.type.da3 = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.934: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.26c: %EmptyRange.as.Iterate.impl.NewCursor.type.934 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness.2d2: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.0db: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.11c: %EmptyRange.as.Iterate.impl.NewCursor.type.0db = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.525: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.2a2: %EmptyRange.as.Iterate.impl.Next.type.525 = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.de0, (%Iterate.impl_witness.2d2) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.ef4: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.3d3: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %.bca: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.ef4, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.11c, @EmptyRange.as.Iterate.impl.NewCursor(%Copy.facet) [concrete] +// CHECK:STDOUT: %.067: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.3d3, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.f82: type = class_type @Optional, @Optional(%Copy.facet) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.805, @EmptyRange.as.Iterate.impl.Next(%Copy.facet) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.2a2, @EmptyRange.as.Iterate.impl.Next(%Copy.facet) [concrete] // CHECK:STDOUT: %Optional.HasValue.type.c5b: type = fn_type @Optional.HasValue, @Optional(%Copy.facet) [concrete] // CHECK:STDOUT: %Optional.HasValue.a88: %Optional.HasValue.type.c5b = struct_value () [concrete] // CHECK:STDOUT: %Optional.Get.type.0a8: type = fn_type @Optional.Get, @Optional(%Copy.facet) [concrete] @@ -192,9 +192,9 @@ fn Run() { // CHECK:STDOUT: %Core.import_ref.73b: @Optional.%Optional.Get.type (%Optional.Get.type.e1b) = import_ref Core//prelude/parts/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.20c)] // CHECK:STDOUT: %Main.import_ref.71a = import_ref Main//empty_range, loc7_68, unloaded // CHECK:STDOUT: %Main.import_ref.999 = import_ref Main//empty_range, loc7_68, unloaded -// CHECK:STDOUT: %Main.import_ref.19c: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.647) = import_ref Main//empty_range, loc8_37, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.9e2)] -// CHECK:STDOUT: %Main.import_ref.ee4: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.cfe) = import_ref Main//empty_range, loc11_66, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.0c8)] -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.71a, %Main.import_ref.999, %Main.import_ref.19c, %Main.import_ref.ee4), @EmptyRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.64d: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.934) = import_ref Main//empty_range, loc8_37, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.26c)] +// CHECK:STDOUT: %Main.import_ref.356: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.da3) = import_ref Main//empty_range, loc11_66, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.311)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.71a, %Main.import_ref.999, %Main.import_ref.64d, %Main.import_ref.356), @EmptyRange.as.Iterate.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -213,7 +213,7 @@ fn Run() { // CHECK:STDOUT: %.loc10_35.1: ref %EmptyRange.de0 = temporary_storage // CHECK:STDOUT: %EmptyRange.Make.call: init %EmptyRange.de0 to %.loc10_35.1 = call %EmptyRange.Make.specific_fn() // CHECK:STDOUT: %.loc10_35.2: ref %EmptyRange.de0 = temporary %.loc10_35.1, %EmptyRange.Make.call -// CHECK:STDOUT: %impl.elem2: %.ca7 = impl_witness_access constants.%Iterate.impl_witness.99c, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.714] +// CHECK:STDOUT: %impl.elem2: %.bca = impl_witness_access constants.%Iterate.impl_witness.2d2, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.11c] // CHECK:STDOUT: %bound_method.loc10_36.1: = bound_method %.loc10_35.2, %impl.elem2 // CHECK:STDOUT: %specific_fn.loc10_36.1: = specific_function %impl.elem2, @EmptyRange.as.Iterate.impl.NewCursor(constants.%Copy.facet) [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.specific_fn] // CHECK:STDOUT: %bound_method.loc10_36.2: = bound_method %.loc10_35.2, %specific_fn.loc10_36.1 @@ -225,7 +225,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.9a7 = impl_witness_access constants.%Iterate.impl_witness.99c, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.805] +// CHECK:STDOUT: %impl.elem3: %.067 = impl_witness_access constants.%Iterate.impl_witness.2d2, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.2a2] // CHECK:STDOUT: %bound_method.loc10_36.3: = bound_method %.loc10_35.2, %impl.elem3 // CHECK:STDOUT: %specific_fn.loc10_36.2: = specific_function %impl.elem3, @EmptyRange.as.Iterate.impl.Next(constants.%Copy.facet) [concrete = constants.%EmptyRange.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc10_36.4: = bound_method %.loc10_35.2, %specific_fn.loc10_36.2 @@ -338,23 +338,23 @@ fn Run() { // CHECK:STDOUT: %Optional.Get.20c: %Optional.Get.type.e1b = struct_value () [symbolic] // CHECK:STDOUT: %Optional.HasValue.type.224: type = fn_type @Optional.HasValue, @Optional(%T.f84) [symbolic] // CHECK:STDOUT: %Optional.HasValue.c4f: %Optional.HasValue.type.224 = struct_value () [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.cfe: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.0c8: %EmptyRange.as.Iterate.impl.Next.type.cfe = struct_value () [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.647: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.9e2: %EmptyRange.as.Iterate.impl.NewCursor.type.647 = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness.99c: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.529: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.714: %EmptyRange.as.Iterate.impl.NewCursor.type.529 = struct_value () [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.3f6: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.805: %EmptyRange.as.Iterate.impl.Next.type.3f6 = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.de0, (%Iterate.impl_witness.99c) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.1b1: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.b69: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %.ca7: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.1b1, %Iterate.facet [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.714, @EmptyRange.as.Iterate.impl.NewCursor(%Copy.facet) [concrete] -// CHECK:STDOUT: %.9a7: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.b69, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.da3: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.311: %EmptyRange.as.Iterate.impl.Next.type.da3 = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.934: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.26c: %EmptyRange.as.Iterate.impl.NewCursor.type.934 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness.2d2: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.0db: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.11c: %EmptyRange.as.Iterate.impl.NewCursor.type.0db = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.525: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%Copy.facet) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.2a2: %EmptyRange.as.Iterate.impl.Next.type.525 = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.de0, (%Iterate.impl_witness.2d2) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.ef4: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.3d3: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %.bca: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.ef4, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.11c, @EmptyRange.as.Iterate.impl.NewCursor(%Copy.facet) [concrete] +// CHECK:STDOUT: %.067: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.3d3, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.f82: type = class_type @Optional, @Optional(%Copy.facet) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.805, @EmptyRange.as.Iterate.impl.Next(%Copy.facet) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.2a2, @EmptyRange.as.Iterate.impl.Next(%Copy.facet) [concrete] // CHECK:STDOUT: %Optional.HasValue.type.c5b: type = fn_type @Optional.HasValue, @Optional(%Copy.facet) [concrete] // CHECK:STDOUT: %Optional.HasValue.a88: %Optional.HasValue.type.c5b = struct_value () [concrete] // CHECK:STDOUT: %Optional.Get.type.0a8: type = fn_type @Optional.Get, @Optional(%Copy.facet) [concrete] @@ -384,9 +384,9 @@ fn Run() { // CHECK:STDOUT: %Core.import_ref.73b: @Optional.%Optional.Get.type (%Optional.Get.type.e1b) = import_ref Core//prelude/parts/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.20c)] // CHECK:STDOUT: %Main.import_ref.71a = import_ref Main//empty_range, loc7_68, unloaded // CHECK:STDOUT: %Main.import_ref.999 = import_ref Main//empty_range, loc7_68, unloaded -// CHECK:STDOUT: %Main.import_ref.19c: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.647) = import_ref Main//empty_range, loc8_37, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.9e2)] -// CHECK:STDOUT: %Main.import_ref.ee4: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.cfe) = import_ref Main//empty_range, loc11_66, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.0c8)] -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.71a, %Main.import_ref.999, %Main.import_ref.19c, %Main.import_ref.ee4), @EmptyRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.64d: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.934) = import_ref Main//empty_range, loc8_37, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.26c)] +// CHECK:STDOUT: %Main.import_ref.356: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.da3) = import_ref Main//empty_range, loc11_66, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.311)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.71a, %Main.import_ref.999, %Main.import_ref.64d, %Main.import_ref.356), @EmptyRange.as.Iterate.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -406,7 +406,7 @@ fn Run() { // CHECK:STDOUT: %.loc10_39.1: ref %EmptyRange.de0 = temporary_storage // CHECK:STDOUT: %EmptyRange.Make.call: init %EmptyRange.de0 to %.loc10_39.1 = call %EmptyRange.Make.specific_fn() // CHECK:STDOUT: %.loc10_39.2: ref %EmptyRange.de0 = temporary %.loc10_39.1, %EmptyRange.Make.call -// CHECK:STDOUT: %impl.elem2: %.ca7 = impl_witness_access constants.%Iterate.impl_witness.99c, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.714] +// CHECK:STDOUT: %impl.elem2: %.bca = impl_witness_access constants.%Iterate.impl_witness.2d2, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.11c] // CHECK:STDOUT: %bound_method.loc10_40.1: = bound_method %.loc10_39.2, %impl.elem2 // CHECK:STDOUT: %specific_fn.loc10_40.1: = specific_function %impl.elem2, @EmptyRange.as.Iterate.impl.NewCursor(constants.%Copy.facet) [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.specific_fn] // CHECK:STDOUT: %bound_method.loc10_40.2: = bound_method %.loc10_39.2, %specific_fn.loc10_40.1 @@ -418,7 +418,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr.loc10: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.9a7 = impl_witness_access constants.%Iterate.impl_witness.99c, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.805] +// CHECK:STDOUT: %impl.elem3: %.067 = impl_witness_access constants.%Iterate.impl_witness.2d2, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.2a2] // CHECK:STDOUT: %bound_method.loc10_40.3: = bound_method %.loc10_39.2, %impl.elem3 // CHECK:STDOUT: %specific_fn.loc10_40.2: = specific_function %impl.elem3, @EmptyRange.as.Iterate.impl.Next(constants.%Copy.facet) [concrete = constants.%EmptyRange.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc10_40.4: = bound_method %.loc10_39.2, %specific_fn.loc10_40.2 @@ -540,23 +540,23 @@ fn Run() { // CHECK:STDOUT: %Optional.Get.20c: %Optional.Get.type.e1b = struct_value () [symbolic] // CHECK:STDOUT: %Optional.HasValue.type.224: type = fn_type @Optional.HasValue, @Optional(%T.f84) [symbolic] // CHECK:STDOUT: %Optional.HasValue.c4f: %Optional.HasValue.type.224 = struct_value () [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.cfe: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.0c8: %EmptyRange.as.Iterate.impl.Next.type.cfe = struct_value () [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.647: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.9e2: %EmptyRange.as.Iterate.impl.NewCursor.type.647 = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness.84c: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet.ee8) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.f6e: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet.ee8) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.2a8: %EmptyRange.as.Iterate.impl.NewCursor.type.f6e = struct_value () [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.2ba: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%Copy.facet.ee8) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.902: %EmptyRange.as.Iterate.impl.Next.type.2ba = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.012, (%Iterate.impl_witness.84c) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.3ee: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.f2f: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %.b4c: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.3ee, %Iterate.facet [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.2a8, @EmptyRange.as.Iterate.impl.NewCursor(%Copy.facet.ee8) [concrete] -// CHECK:STDOUT: %.29a: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.f2f, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.da3: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.311: %EmptyRange.as.Iterate.impl.Next.type.da3 = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.934: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.26c: %EmptyRange.as.Iterate.impl.NewCursor.type.934 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness.1d8: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet.ee8) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.d00: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet.ee8) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.eb7: %EmptyRange.as.Iterate.impl.NewCursor.type.d00 = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.d88: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%Copy.facet.ee8) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.2c6: %EmptyRange.as.Iterate.impl.Next.type.d88 = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.012, (%Iterate.impl_witness.1d8) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.dba: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.9ae: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %.20d: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.dba, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.eb7, @EmptyRange.as.Iterate.impl.NewCursor(%Copy.facet.ee8) [concrete] +// CHECK:STDOUT: %.54b: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.9ae, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.8b2: type = class_type @Optional, @Optional(%Copy.facet.ee8) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.902, @EmptyRange.as.Iterate.impl.Next(%Copy.facet.ee8) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.2c6, @EmptyRange.as.Iterate.impl.Next(%Copy.facet.ee8) [concrete] // CHECK:STDOUT: %Optional.HasValue.type.462: type = fn_type @Optional.HasValue, @Optional(%Copy.facet.ee8) [concrete] // CHECK:STDOUT: %Optional.HasValue.c8b: %Optional.HasValue.type.462 = struct_value () [concrete] // CHECK:STDOUT: %Optional.Get.type.d91: type = fn_type @Optional.Get, @Optional(%Copy.facet.ee8) [concrete] @@ -587,9 +587,9 @@ fn Run() { // CHECK:STDOUT: %Core.import_ref.73b: @Optional.%Optional.Get.type (%Optional.Get.type.e1b) = import_ref Core//prelude/parts/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.20c)] // CHECK:STDOUT: %Main.import_ref.71a = import_ref Main//empty_range, loc7_68, unloaded // CHECK:STDOUT: %Main.import_ref.999 = import_ref Main//empty_range, loc7_68, unloaded -// CHECK:STDOUT: %Main.import_ref.19c: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.647) = import_ref Main//empty_range, loc8_37, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.9e2)] -// CHECK:STDOUT: %Main.import_ref.ee4: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.cfe) = import_ref Main//empty_range, loc11_66, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.0c8)] -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.71a, %Main.import_ref.999, %Main.import_ref.19c, %Main.import_ref.ee4), @EmptyRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.64d: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.934) = import_ref Main//empty_range, loc8_37, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.26c)] +// CHECK:STDOUT: %Main.import_ref.356: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.da3) = import_ref Main//empty_range, loc11_66, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.311)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.71a, %Main.import_ref.999, %Main.import_ref.64d, %Main.import_ref.356), @EmptyRange.as.Iterate.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -612,7 +612,7 @@ fn Run() { // CHECK:STDOUT: %.loc10_60.1: ref %EmptyRange.012 = temporary_storage // CHECK:STDOUT: %EmptyRange.Make.call: init %EmptyRange.012 to %.loc10_60.1 = call %EmptyRange.Make.specific_fn() // CHECK:STDOUT: %.loc10_60.2: ref %EmptyRange.012 = temporary %.loc10_60.1, %EmptyRange.Make.call -// CHECK:STDOUT: %impl.elem2: %.b4c = impl_witness_access constants.%Iterate.impl_witness.84c, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.2a8] +// CHECK:STDOUT: %impl.elem2: %.20d = impl_witness_access constants.%Iterate.impl_witness.1d8, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.eb7] // CHECK:STDOUT: %bound_method.loc10_61.1: = bound_method %.loc10_60.2, %impl.elem2 // CHECK:STDOUT: %specific_fn.loc10_61.1: = specific_function %impl.elem2, @EmptyRange.as.Iterate.impl.NewCursor(constants.%Copy.facet.ee8) [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.specific_fn] // CHECK:STDOUT: %bound_method.loc10_61.2: = bound_method %.loc10_60.2, %specific_fn.loc10_61.1 @@ -624,7 +624,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.29a = impl_witness_access constants.%Iterate.impl_witness.84c, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.902] +// CHECK:STDOUT: %impl.elem3: %.54b = impl_witness_access constants.%Iterate.impl_witness.1d8, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.2c6] // CHECK:STDOUT: %bound_method.loc10_61.3: = bound_method %.loc10_60.2, %impl.elem3 // CHECK:STDOUT: %specific_fn.loc10_61.2: = specific_function %impl.elem3, @EmptyRange.as.Iterate.impl.Next(constants.%Copy.facet.ee8) [concrete = constants.%EmptyRange.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc10_61.4: = bound_method %.loc10_60.2, %specific_fn.loc10_61.2 @@ -752,23 +752,23 @@ fn Run() { // CHECK:STDOUT: %Optional.Get.20c: %Optional.Get.type.e1b = struct_value () [symbolic] // CHECK:STDOUT: %Optional.HasValue.type.224: type = fn_type @Optional.HasValue, @Optional(%T.f84) [symbolic] // CHECK:STDOUT: %Optional.HasValue.c4f: %Optional.HasValue.type.224 = struct_value () [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.cfe: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.0c8: %EmptyRange.as.Iterate.impl.Next.type.cfe = struct_value () [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.647: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.9e2: %EmptyRange.as.Iterate.impl.NewCursor.type.647 = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.impl_witness.e7c: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet.bb7) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.f09: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet.bb7) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.9b3: %EmptyRange.as.Iterate.impl.NewCursor.type.f09 = struct_value () [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.75f: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%Copy.facet.bb7) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.529: %EmptyRange.as.Iterate.impl.Next.type.75f = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.617, (%Iterate.impl_witness.e7c) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.dbf: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.286: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] -// CHECK:STDOUT: %.bb9: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.dbf, %Iterate.facet [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.9b3, @EmptyRange.as.Iterate.impl.NewCursor(%Copy.facet.bb7) [concrete] -// CHECK:STDOUT: %.985: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.286, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.da3: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.311: %EmptyRange.as.Iterate.impl.Next.type.da3 = struct_value () [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.934: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%T.f84) [symbolic] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.26c: %EmptyRange.as.Iterate.impl.NewCursor.type.934 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.impl_witness.a8d: = impl_witness imports.%Iterate.impl_witness_table, @EmptyRange.as.Iterate.impl(%Copy.facet.bb7) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.type.efd: type = fn_type @EmptyRange.as.Iterate.impl.NewCursor, @EmptyRange.as.Iterate.impl(%Copy.facet.bb7) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.126: %EmptyRange.as.Iterate.impl.NewCursor.type.efd = struct_value () [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.type.24f: type = fn_type @EmptyRange.as.Iterate.impl.Next, @EmptyRange.as.Iterate.impl(%Copy.facet.bb7) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.bed: %EmptyRange.as.Iterate.impl.Next.type.24f = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %EmptyRange.617, (%Iterate.impl_witness.a8d) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.622: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.76f: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [concrete] +// CHECK:STDOUT: %.c0e: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.622, %Iterate.facet [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.NewCursor.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.NewCursor.126, @EmptyRange.as.Iterate.impl.NewCursor(%Copy.facet.bb7) [concrete] +// CHECK:STDOUT: %.b8a: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.76f, %Iterate.facet [concrete] // CHECK:STDOUT: %Optional.8e2: type = class_type @Optional, @Optional(%Copy.facet.bb7) [concrete] -// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.529, @EmptyRange.as.Iterate.impl.Next(%Copy.facet.bb7) [concrete] +// CHECK:STDOUT: %EmptyRange.as.Iterate.impl.Next.specific_fn: = specific_function %EmptyRange.as.Iterate.impl.Next.bed, @EmptyRange.as.Iterate.impl.Next(%Copy.facet.bb7) [concrete] // CHECK:STDOUT: %Optional.HasValue.type.472: type = fn_type @Optional.HasValue, @Optional(%Copy.facet.bb7) [concrete] // CHECK:STDOUT: %Optional.HasValue.563: %Optional.HasValue.type.472 = struct_value () [concrete] // CHECK:STDOUT: %Optional.Get.type.a18: type = fn_type @Optional.Get, @Optional(%Copy.facet.bb7) [concrete] @@ -800,9 +800,9 @@ fn Run() { // CHECK:STDOUT: %Core.import_ref.73b: @Optional.%Optional.Get.type (%Optional.Get.type.e1b) = import_ref Core//prelude/parts/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.20c)] // CHECK:STDOUT: %Main.import_ref.71a = import_ref Main//empty_range, loc7_68, unloaded // CHECK:STDOUT: %Main.import_ref.999 = import_ref Main//empty_range, loc7_68, unloaded -// CHECK:STDOUT: %Main.import_ref.19c: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.647) = import_ref Main//empty_range, loc8_37, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.9e2)] -// CHECK:STDOUT: %Main.import_ref.ee4: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.cfe) = import_ref Main//empty_range, loc11_66, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.0c8)] -// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.71a, %Main.import_ref.999, %Main.import_ref.19c, %Main.import_ref.ee4), @EmptyRange.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Main.import_ref.64d: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor.type (%EmptyRange.as.Iterate.impl.NewCursor.type.934) = import_ref Main//empty_range, loc8_37, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.NewCursor (constants.%EmptyRange.as.Iterate.impl.NewCursor.26c)] +// CHECK:STDOUT: %Main.import_ref.356: @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next.type (%EmptyRange.as.Iterate.impl.Next.type.da3) = import_ref Main//empty_range, loc11_66, loaded [symbolic = @EmptyRange.as.Iterate.impl.%EmptyRange.as.Iterate.impl.Next (constants.%EmptyRange.as.Iterate.impl.Next.311)] +// CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%Main.import_ref.71a, %Main.import_ref.999, %Main.import_ref.64d, %Main.import_ref.356), @EmptyRange.as.Iterate.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -825,7 +825,7 @@ fn Run() { // CHECK:STDOUT: %.loc10_48.1: ref %EmptyRange.617 = temporary_storage // CHECK:STDOUT: %EmptyRange.Make.call: init %EmptyRange.617 to %.loc10_48.1 = call %EmptyRange.Make.specific_fn() // CHECK:STDOUT: %.loc10_48.2: ref %EmptyRange.617 = temporary %.loc10_48.1, %EmptyRange.Make.call -// CHECK:STDOUT: %impl.elem2: %.bb9 = impl_witness_access constants.%Iterate.impl_witness.e7c, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.9b3] +// CHECK:STDOUT: %impl.elem2: %.c0e = impl_witness_access constants.%Iterate.impl_witness.a8d, element2 [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.126] // CHECK:STDOUT: %bound_method.loc10_49.1: = bound_method %.loc10_48.2, %impl.elem2 // CHECK:STDOUT: %specific_fn.loc10_49.1: = specific_function %impl.elem2, @EmptyRange.as.Iterate.impl.NewCursor(constants.%Copy.facet.bb7) [concrete = constants.%EmptyRange.as.Iterate.impl.NewCursor.specific_fn] // CHECK:STDOUT: %bound_method.loc10_49.2: = bound_method %.loc10_48.2, %specific_fn.loc10_49.1 @@ -837,7 +837,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr: %ptr.c28 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.985 = impl_witness_access constants.%Iterate.impl_witness.e7c, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.529] +// CHECK:STDOUT: %impl.elem3: %.b8a = impl_witness_access constants.%Iterate.impl_witness.a8d, element3 [concrete = constants.%EmptyRange.as.Iterate.impl.Next.bed] // CHECK:STDOUT: %bound_method.loc10_49.3: = bound_method %.loc10_48.2, %impl.elem3 // CHECK:STDOUT: %specific_fn.loc10_49.2: = specific_function %impl.elem3, @EmptyRange.as.Iterate.impl.Next(constants.%Copy.facet.bb7) [concrete = constants.%EmptyRange.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc10_49.4: = bound_method %.loc10_48.2, %specific_fn.loc10_49.2 diff --git a/toolchain/check/testdata/function/builtin/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/call_from_operator.carbon index 96a3477dfe70..f84079c1fd1e 100644 --- a/toolchain/check/testdata/function/builtin/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/call_from_operator.carbon @@ -70,7 +70,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete] // CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %AddWith.type.2ef: type = generic_interface_type @AddWith [concrete] @@ -224,7 +224,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc8_20.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_20.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_23.1: type = splice_block %.loc8_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_20.1 (constants.%T)] @@ -233,7 +233,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc12_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_18.1: type = splice_block %.loc12_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.1 (constants.%T)] @@ -242,7 +242,7 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc16_23.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_23.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_26.1: type = splice_block %.loc16_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc16_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc16_23.2: type = symbolic_binding T, 0 [symbolic = %T.loc16_23.1 (constants.%T)] diff --git a/toolchain/check/testdata/function/call/form.carbon b/toolchain/check/testdata/function/call/form.carbon index 1087983aa5ec..5196712d91a4 100644 --- a/toolchain/check/testdata/function/call/form.carbon +++ b/toolchain/check/testdata/function/call/form.carbon @@ -667,7 +667,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.13f: type = pattern_type Core.Form [concrete] // CHECK:STDOUT: %Fm.patt: %pattern_type.13f = symbolic_binding_pattern Fm, 0 [symbolic] // CHECK:STDOUT: %Fm: Core.Form = symbolic_binding Fm, 0 [symbolic] @@ -825,7 +825,7 @@ fn G() { // CHECK:STDOUT: %Fm.ref.loc4_34: Core.Form = name_ref Fm, %Fm.loc4_8.2 [symbolic = %Fm.loc4_8.1 (constants.%Fm)] // CHECK:STDOUT: %.loc4_34: type = type_component_of %Fm.ref.loc4_34 [symbolic = %.loc4_26.1 (constants.%.42f)] // CHECK:STDOUT: %.loc4_15: type = splice_block %Form.ref [concrete = Core.Form] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Form.ref: type = name_ref Form, imports.%Core.Form [concrete = Core.Form] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon index 7523fbdf422b..07e3d2f759d2 100644 --- a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon +++ b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon @@ -31,7 +31,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %F.patt: %pattern_type.98f = symbolic_binding_pattern F, 0 [symbolic] // CHECK:STDOUT: %F: type = symbolic_binding F, 0 [symbolic] @@ -96,7 +96,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %F.patt.loc5_14.1: %pattern_type.98f = symbolic_binding_pattern F, 0 [symbolic = %F.patt.loc5_14.2 (constants.%F.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %F.loc5_14.2: type = symbolic_binding F, 0 [symbolic = %F.loc5_14.1 (constants.%F)] @@ -106,7 +106,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: %.loc13_14.1: type = splice_block %.loc13_14.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_14.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %F.loc13_11: type = symbolic_binding F, 0 [symbolic = @Class.%F.loc5_14.1 (constants.%F)] diff --git a/toolchain/check/testdata/function/definition/syntactic_merge.carbon b/toolchain/check/testdata/function/definition/syntactic_merge.carbon index e0c8ce12648f..22155130ff53 100644 --- a/toolchain/check/testdata/function/definition/syntactic_merge.carbon +++ b/toolchain/check/testdata/function/definition/syntactic_merge.carbon @@ -742,7 +742,7 @@ fn Foo(unused a: const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a.1bf9e8.1: %C = symbolic_binding a, 0 [symbolic] @@ -766,7 +766,7 @@ fn Foo(unused a: const (const C)) {} // CHECK:STDOUT: %a.patt.loc7_9.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_9.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_9.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_9.1 (constants.%a.1bf9e8.1)] @@ -775,7 +775,7 @@ fn Foo(unused a: const (const C)) {} // CHECK:STDOUT: %a.patt.loc15_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc15_16.3: %C = symbolic_binding a, 0 [symbolic = %a.loc15_16.2 (constants.%a.1bf9e8.2)] diff --git a/toolchain/check/testdata/function/generic/call.carbon b/toolchain/check/testdata/function/generic/call.carbon index 3de4f3005c4b..73b7dbeaebc2 100644 --- a/toolchain/check/testdata/function/generic/call.carbon +++ b/toolchain/check/testdata/function/generic/call.carbon @@ -75,7 +75,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.patt.fe6: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic] @@ -160,7 +160,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %.loc5_37.3: type = converted %T.ref.loc5_37, %T.as_type.loc5_37 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc5_37.4: Core.Form = init_form %.loc5_37.3 [symbolic = %.loc5_37.2 (constants.%.1ce700.2)] // CHECK:STDOUT: %.loc5_21: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -373,7 +373,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete] // CHECK:STDOUT: %pattern_type.e81: type = pattern_type %Copy.type [concrete] // CHECK:STDOUT: %T.patt.fe6: %pattern_type.e81 = symbolic_binding_pattern T, 0 [symbolic] @@ -458,7 +458,7 @@ fn CallSpecific(x: C*) -> C* { // CHECK:STDOUT: %.loc5_37.3: type = converted %T.ref.loc5_37, %T.as_type.loc5_37 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc5_37.4: Core.Form = init_form %.loc5_37.3 [symbolic = %.loc5_37.2 (constants.%.1ce700.2)] // CHECK:STDOUT: %.loc5_21: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } 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 a162b3061868..2851bd70d828 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 @@ -42,7 +42,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Scalar.patt: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic] // CHECK:STDOUT: %Scalar: type = symbolic_binding Scalar, 0 [symbolic] @@ -135,7 +135,7 @@ fn G() { // CHECK:STDOUT: %Scalar.patt.loc15_25.1: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [symbolic = %Scalar.patt.loc15_25.2 (constants.%Scalar.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_28.1: type = splice_block %.loc15_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %Scalar.loc15_25.2: type = symbolic_binding Scalar, 0 [symbolic = %Scalar.loc15_25.1 (constants.%Scalar)] @@ -158,12 +158,12 @@ fn G() { // CHECK:STDOUT: %U.patt.loc33_33.1: @CallGenericMethod.%pattern_type (%pattern_type.4e0) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc33_33.2 (constants.%U.patt.8a6)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc33_26.1: type = splice_block %.loc33_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc33_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc33_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc33_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc33_23.2: type = symbolic_binding T, 0 [symbolic = %T.loc33_23.1 (constants.%T)] // CHECK:STDOUT: %.loc33_45: type = splice_block %Generic.type.loc33_45.2 [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.ee14e9.2)] { -// CHECK:STDOUT: %.Self.loc33_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc33_33: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc33_23.2 [symbolic = %T.loc33_23.1 (constants.%T)] // CHECK:STDOUT: %Generic.type.loc33_45.2: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.ee14e9.2)] diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index 6257ab8ff7ba..b370b5fd21bb 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -217,7 +217,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -281,7 +281,7 @@ fn F() { // CHECK:STDOUT: %ptr.loc4_39.2: type = ptr_type %T.ref.loc4_38 [symbolic = %ptr.loc4_39.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %.loc4_39.2: Core.Form = init_form %ptr.loc4_39.2 [symbolic = %.loc4_39.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc4_29.1: type = splice_block %.loc4_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_26.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_26.1 (constants.%T)] @@ -308,7 +308,7 @@ fn F() { // CHECK:STDOUT: %ptr.loc10_63.2: type = ptr_type %struct_type.a.loc10_62.2 [symbolic = %ptr.loc10_63.1 (constants.%ptr.88d)] // CHECK:STDOUT: %.loc10_63.2: Core.Form = init_form %ptr.loc10_63.2 [symbolic = %.loc10_63.1 (constants.%.edd)] // CHECK:STDOUT: %.loc10_47.1: type = splice_block %.loc10_47.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc10_47.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10_44.2: type = symbolic_binding T, 0 [symbolic = %T.loc10_44.1 (constants.%T)] @@ -437,7 +437,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] @@ -482,7 +482,7 @@ fn F() { // CHECK:STDOUT: %ptr.loc4_39.2: type = ptr_type %T.ref.loc4_38 [symbolic = %ptr.loc4_39.1 (constants.%ptr)] // CHECK:STDOUT: %.loc4_39.2: Core.Form = init_form %ptr.loc4_39.2 [symbolic = %.loc4_39.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc4_29.1: type = splice_block %.loc4_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_26.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_26.1 (constants.%T)] @@ -493,7 +493,7 @@ fn F() { // CHECK:STDOUT: %T.patt.loc6_35.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_35.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_38.1: type = splice_block %.loc6_38.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_38.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_35.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_35.1 (constants.%T)] @@ -588,7 +588,7 @@ fn F() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -656,7 +656,7 @@ fn F() { // CHECK:STDOUT: %ptr.loc6_47.2: type = ptr_type %T.ref.loc6_46 [symbolic = %ptr.loc6_47.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %.loc6_47.2: Core.Form = init_form %ptr.loc6_47.2 [symbolic = %.loc6_47.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc6_31.1: type = splice_block %.loc6_31.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_31.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_28.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_28.1 (constants.%T)] @@ -783,7 +783,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -849,7 +849,7 @@ fn F() { // CHECK:STDOUT: %ptr.loc4_45.2: type = ptr_type %T.ref.loc4_44 [symbolic = %ptr.loc4_45.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %.loc4_45.2: Core.Form = init_form %ptr.loc4_45.2 [symbolic = %.loc4_45.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc4_29.1: type = splice_block %.loc4_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_26.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_26.1 (constants.%T)] @@ -956,7 +956,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1032,7 +1032,7 @@ fn F() { // CHECK:STDOUT: %x.patt.loc4_33.1: @TupleParam.%pattern_type (%pattern_type.1d4) = at_binding_pattern x, %x.param_patt.loc4_33.1 [symbolic = %x.patt.loc4_33.2 (constants.%x.patt.253)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_19.1: type = splice_block %.loc4_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_16.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_16.1 (constants.%T)] @@ -1117,7 +1117,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1190,7 +1190,7 @@ fn F() { // CHECK:STDOUT: %x.patt.loc4_34.1: @StructParam.%pattern_type (%pattern_type.538) = at_binding_pattern x, %x.param_patt.loc4_34.1 [symbolic = %x.patt.loc4_34.2 (constants.%x.patt.a9e)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_17.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_17.1 (constants.%T)] @@ -1271,7 +1271,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1316,7 +1316,7 @@ fn F() { // CHECK:STDOUT: %x.patt.loc4_37.1: @BigStructParam.%pattern_type (%pattern_type.3dc) = at_binding_pattern x, %x.param_patt.loc4_37.1 [symbolic = %x.patt.loc4_37.2 (constants.%x.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_23.1: type = splice_block %.loc4_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_20.1 (constants.%T)] @@ -1375,7 +1375,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1421,7 +1421,7 @@ fn F() { // CHECK:STDOUT: %x.patt.loc4_39.1: @SmallStructParam.%pattern_type (%pattern_type.128) = at_binding_pattern x, %x.param_patt.loc4_39.1 [symbolic = %x.patt.loc4_39.2 (constants.%x.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_25.1: type = splice_block %.loc4_25.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_25.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_22.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_22.1 (constants.%T)] @@ -1480,7 +1480,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1525,7 +1525,7 @@ fn F() { // CHECK:STDOUT: %x.patt.loc4_43.1: @WrongNameStructParam.%pattern_type (%pattern_type.1b7) = at_binding_pattern x, %x.param_patt.loc4_43.1 [symbolic = %x.patt.loc4_43.2 (constants.%x.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_29.1: type = splice_block %.loc4_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_26.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_26.1 (constants.%T)] @@ -1583,7 +1583,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1628,7 +1628,7 @@ fn F() { // CHECK:STDOUT: %x.patt.loc4_44.1: @WrongOrderStructParam.%pattern_type (%pattern_type.f83) = at_binding_pattern x, %x.param_patt.loc4_44.1 [symbolic = %x.patt.loc4_44.2 (constants.%x.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_30.1: type = splice_block %.loc4_30.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_30.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_27.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_27.1 (constants.%T)] @@ -1686,7 +1686,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1731,12 +1731,12 @@ fn F() { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc6_36.2 [symbolic = %U.loc6_36.1 (constants.%U)] // CHECK:STDOUT: %.loc6_54.2: Core.Form = init_form %U.ref [symbolic = %.loc6_54.1 (constants.%.822)] // CHECK:STDOUT: %.loc6_29.1: type = splice_block %.loc6_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc6_26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_26.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_26.1 (constants.%T)] // CHECK:STDOUT: %.loc6_39.1: type = splice_block %.loc6_39.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc6_36: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_36: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_39.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc6_36.2: type = symbolic_binding U, 1 [symbolic = %U.loc6_36.1 (constants.%U)] @@ -1792,7 +1792,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1840,7 +1840,7 @@ fn F() { // CHECK:STDOUT: %T.ref.loc4_50: type = name_ref T, %T.loc4_26.2 [symbolic = %T.loc4_26.1 (constants.%T)] // CHECK:STDOUT: %.loc4_50.2: Core.Form = init_form %T.ref.loc4_50 [symbolic = %.loc4_50.1 (constants.%.184)] // CHECK:STDOUT: %.loc4_29.1: type = splice_block %.loc4_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_26.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_26.1 (constants.%T)] @@ -1906,7 +1906,7 @@ fn F() { // 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] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %E.patt: %pattern_type.98f = symbolic_binding_pattern E, 0 [symbolic] // CHECK:STDOUT: %E: type = symbolic_binding E, 0 [symbolic] @@ -1965,7 +1965,7 @@ fn F() { // 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: } { // CHECK:STDOUT: %.loc8_14.1: type = splice_block %.loc8_14.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_14.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %E.loc8_11.2: type = symbolic_binding E, 0 [symbolic = %E.loc8_11.1 (constants.%E)] @@ -1978,7 +1978,7 @@ fn F() { // CHECK:STDOUT: %DD.loc9_28.1: type = class_type @DD, @DD(constants.%E) [symbolic = %DD.loc9_28.2 (constants.%DD.699)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: %.loc9_18.1: type = splice_block %.loc9_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %E.loc9_15.1: type = symbolic_binding E, 0 [symbolic = %E.loc9_15.2 (constants.%E)] @@ -1987,7 +1987,7 @@ fn F() { // 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: } { // CHECK:STDOUT: %.loc11: type = splice_block %Z.ref [concrete = constants.%Z.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: %D.loc11_11.2: %Z.type = symbolic_binding D, 0 [symbolic = %D.loc11_11.1 (constants.%D)] @@ -2004,7 +2004,7 @@ fn F() { // CHECK:STDOUT: %CC.loc12_32.1: type = class_type @CC, @CC(constants.%Z.facet.0b6) [symbolic = %CC.loc12_32.2 (constants.%CC.2a8)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: %.loc12_18.1: type = splice_block %.loc12_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %E.loc12_15.1: type = symbolic_binding E, 0 [symbolic = %E.loc12_15.2 (constants.%E)] 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 2f4f07e80448..4e42dbbb4cc8 100644 --- a/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon +++ b/toolchain/check/testdata/function/generic/deduce_nested_facet_value.carbon @@ -52,7 +52,7 @@ fn F() { // 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] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.cfb: type = pattern_type %Y.type [concrete] // CHECK:STDOUT: %D.patt: %pattern_type.cfb = symbolic_binding_pattern D, 0 [symbolic] // CHECK:STDOUT: %D: %Y.type = symbolic_binding D, 0 [symbolic] @@ -126,7 +126,7 @@ fn F() { // 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: } { // CHECK:STDOUT: %.loc12: type = splice_block %Y.ref [concrete = constants.%Y.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] // CHECK:STDOUT: } // CHECK:STDOUT: %D.loc12_11.2: %Y.type = symbolic_binding D, 0 [symbolic = %D.loc12_11.1 (constants.%D)] @@ -143,7 +143,7 @@ fn F() { // CHECK:STDOUT: %CC.loc19_29.1: type = class_type @CC, @CC(constants.%Y.facet.18f) [symbolic = %CC.loc19_29.2 (constants.%CC.db5)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: %.loc19_20.1: type = splice_block %.loc19_20.3 [concrete = constants.%facet_type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] // CHECK:STDOUT: %W.ref: type = name_ref W, file.%W.decl [concrete = constants.%W.type] // CHECK:STDOUT: %impl.elem0: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] diff --git a/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon b/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon index fe6d02b47817..070fe01b9ac5 100644 --- a/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon +++ b/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon @@ -51,7 +51,7 @@ fn B() { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self: %Z.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.1d1: type = pattern_type %Z.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.1d1 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %Z.type = symbolic_binding T, 0 [symbolic] @@ -77,7 +77,7 @@ fn B() { // CHECK:STDOUT: %x.patt.loc4_21.1: @A.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt.loc4_21.1 [symbolic = %x.patt.loc4_21.2 (constants.%x.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_10: type = splice_block %Z.ref [concrete = constants.%Z.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_7.2: %Z.type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T)] @@ -143,7 +143,7 @@ fn B() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self: %Z.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %pattern_type.1d1: type = pattern_type %Z.type [concrete] @@ -193,7 +193,7 @@ fn B() { // CHECK:STDOUT: %x.patt.loc4_25.1: @A.loc4.%pattern_type (%pattern_type.662) = at_binding_pattern x, %x.param_patt.loc4_25.1 [symbolic = %x.patt.loc4_25.2 (constants.%x.patt.fcf7db.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13: type = splice_block %Z.ref [concrete = constants.%Z.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Lib.ref: = name_ref Lib, imports.%Lib [concrete = imports.%Lib] // CHECK:STDOUT: %Z.ref: type = name_ref Z, imports.%Lib.Z [concrete = constants.%Z.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/forward_decl.carbon b/toolchain/check/testdata/function/generic/forward_decl.carbon index 53e31e4232dc..044996526ea4 100644 --- a/toolchain/check/testdata/function/generic/forward_decl.carbon +++ b/toolchain/check/testdata/function/generic/forward_decl.carbon @@ -18,7 +18,7 @@ fn F(T:! type); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -34,7 +34,7 @@ fn F(T:! type); // CHECK:STDOUT: %T.patt.loc15_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_10.1: type = splice_block %.loc15_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_7.1 (constants.%T)] diff --git a/toolchain/check/testdata/function/generic/import_specific.carbon b/toolchain/check/testdata/function/generic/import_specific.carbon index 3d926dddf5b7..d356820621ed 100644 --- a/toolchain/check/testdata/function/generic/import_specific.carbon +++ b/toolchain/check/testdata/function/generic/import_specific.carbon @@ -42,7 +42,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47011.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0 [symbolic] @@ -65,7 +65,7 @@ fn H() { // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt.d47011.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T.67db0b.1)] @@ -74,7 +74,7 @@ fn H() { // CHECK:STDOUT: %T.patt.loc7_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_7.2 (constants.%T.patt.d47011.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T.67db0b.2)] diff --git a/toolchain/check/testdata/function/generic/param_in_type.carbon b/toolchain/check/testdata/function/generic/param_in_type.carbon index 46beffd50fa3..9db97fc1e7b2 100644 --- a/toolchain/check/testdata/function/generic/param_in_type.carbon +++ b/toolchain/check/testdata/function/generic/param_in_type.carbon @@ -18,7 +18,7 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -76,7 +76,7 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: %a.patt.loc15_16.1: @F.%pattern_type (%pattern_type.5a4) = at_binding_pattern a, %a.param_patt.loc15_16.1 [symbolic = %a.patt.loc15_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_10: type = splice_block %i32.loc15_10 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc15_10: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc15_7.2: %i32 = symbolic_binding N, 0 [symbolic = %N.loc15_7.1 (constants.%N.37f)] diff --git a/toolchain/check/testdata/function/generic/redeclare.carbon b/toolchain/check/testdata/function/generic/redeclare.carbon index 7bab77b7b7d1..ccc1a283fba0 100644 --- a/toolchain/check/testdata/function/generic/redeclare.carbon +++ b/toolchain/check/testdata/function/generic/redeclare.carbon @@ -98,7 +98,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -135,7 +135,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %ptr.loc4_20.2: type = ptr_type %T.ref.loc4 [symbolic = %ptr.loc4_20.1 (constants.%ptr)] // CHECK:STDOUT: %.loc4_20.2: Core.Form = init_form %ptr.loc4_20.2 [symbolic = %.loc4_20.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T)] @@ -151,7 +151,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %ptr.loc6: type = ptr_type %T.ref.loc6 [symbolic = %ptr.loc4_20.1 (constants.%ptr)] // CHECK:STDOUT: %.loc6_20: Core.Form = init_form %ptr.loc6 [symbolic = %.loc4_20.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T)] @@ -203,7 +203,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -249,12 +249,12 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %.loc4_30.2: Core.Form = init_form %ptr.loc4_30.2 [symbolic = %.loc4_30.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T)] // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc4_17.2: type = symbolic_binding U, 1 [symbolic = %U.loc4_17.1 (constants.%U)] @@ -271,12 +271,12 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type %U.ref [symbolic = %ptr.loc13_30.1 (constants.%ptr.18e)] // CHECK:STDOUT: %.loc13_30.2: Core.Form = init_form %ptr.loc13_30.2 [symbolic = %.loc13_30.1 (constants.%.6d8)] // CHECK:STDOUT: %.loc13_10.1: type = splice_block %.loc13_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc13_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc13_7.1 (constants.%T)] // CHECK:STDOUT: %.loc13_20.1: type = splice_block %.loc13_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc13_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc13_17.2: type = symbolic_binding U, 1 [symbolic = %U.loc13_17.1 (constants.%U)] @@ -351,7 +351,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -401,12 +401,12 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %.loc4_30.2: Core.Form = init_form %ptr.loc4_30.2 [symbolic = %.loc4_30.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T.67d)] // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc4_17.2: type = symbolic_binding U, 1 [symbolic = %U.loc4_17.1 (constants.%U.091)] @@ -423,12 +423,12 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %ptr.loc13_37.2: type = ptr_type %T.ref.loc13 [symbolic = %ptr.loc13_37.1 (constants.%ptr.18e)] // CHECK:STDOUT: %.loc13_37.2: Core.Form = init_form %ptr.loc13_37.2 [symbolic = %.loc13_37.1 (constants.%.6d8)] // CHECK:STDOUT: %.loc13_17.1: type = splice_block %.loc13_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc13_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc13_14.2: type = symbolic_binding U, 0 [symbolic = %U.loc13_14.1 (constants.%U.67d)] // CHECK:STDOUT: %.loc13_27.1: type = splice_block %.loc13_27.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc13_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_27.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_24.2: type = symbolic_binding T, 1 [symbolic = %T.loc13_24.1 (constants.%T.091)] @@ -503,7 +503,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -553,12 +553,12 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type %T.ref [symbolic = %ptr.loc4_30.1 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %.loc4_30.2: Core.Form = init_form %ptr.loc4_30.2 [symbolic = %.loc4_30.1 (constants.%.cb6cb9.1)] // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_7.1 (constants.%T.67d)] // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc4_17.2: type = symbolic_binding U, 1 [symbolic = %U.loc4_17.1 (constants.%U.091)] @@ -575,12 +575,12 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type %U.ref [symbolic = %ptr.loc13_30.1 (constants.%ptr.e8f8f9.2)] // CHECK:STDOUT: %.loc13_30.2: Core.Form = init_form %ptr.loc13_30.2 [symbolic = %.loc13_30.1 (constants.%.cb6cb9.2)] // CHECK:STDOUT: %.loc13_10.1: type = splice_block %.loc13_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc13_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc13_7.2: type = symbolic_binding U, 0 [symbolic = %U.loc13_7.1 (constants.%U.67d)] // CHECK:STDOUT: %.loc13_20.1: type = splice_block %.loc13_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc13_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_17.2: type = symbolic_binding T, 1 [symbolic = %T.loc13_17.1 (constants.%T.091)] diff --git a/toolchain/check/testdata/function/generic/resolve_used.carbon b/toolchain/check/testdata/function/generic/resolve_used.carbon index f463718440c5..5f9acef0879f 100644 --- a/toolchain/check/testdata/function/generic/resolve_used.carbon +++ b/toolchain/check/testdata/function/generic/resolve_used.carbon @@ -43,7 +43,7 @@ fn CallNegative() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] @@ -127,7 +127,7 @@ fn CallNegative() { // CHECK:STDOUT: %N.patt.loc4_20.1: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_20.2 (constants.%N.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Core.ref.loc4: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index 2b3104f43c2e..1000c0d01e71 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -28,7 +28,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -124,7 +124,7 @@ fn G() { // CHECK:STDOUT: %T.patt.loc15_13.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_16.1: type = splice_block %.loc15_16.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_16.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_13.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_13.1 (constants.%T)] diff --git a/toolchain/check/testdata/function/generic/template_param.carbon b/toolchain/check/testdata/function/generic/template_param.carbon index 68e4f5297775..441b073a07bc 100644 --- a/toolchain/check/testdata/function/generic/template_param.carbon +++ b/toolchain/check/testdata/function/generic/template_param.carbon @@ -27,7 +27,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T: type = symbolic_binding T, 0, template [template] @@ -50,7 +50,7 @@ fn G() { // CHECK:STDOUT: %T.patt.loc4_23.1: %pattern_type = symbolic_binding_pattern T, 0, template [template = %T.patt.loc4_23.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_26.1: type = splice_block %.loc4_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_23.2: type = symbolic_binding T, 0, template [template = %T.loc4_23.1 (constants.%T)] diff --git a/toolchain/check/testdata/function/generic/type_param.carbon b/toolchain/check/testdata/function/generic/type_param.carbon index b56ff02fd177..03820692e304 100644 --- a/toolchain/check/testdata/function/generic/type_param.carbon +++ b/toolchain/check/testdata/function/generic/type_param.carbon @@ -22,7 +22,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -75,7 +75,7 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt.loc15_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_7.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_10.1: type = splice_block %.loc15_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_7.1 (constants.%T.67d)] diff --git a/toolchain/check/testdata/generic/call_basic_depth.carbon b/toolchain/check/testdata/generic/call_basic_depth.carbon index 241a82b755ae..e4fd352eb6fd 100644 --- a/toolchain/check/testdata/generic/call_basic_depth.carbon +++ b/toolchain/check/testdata/generic/call_basic_depth.carbon @@ -51,7 +51,7 @@ fn M() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -91,7 +91,7 @@ fn M() { // CHECK:STDOUT: %x.patt.loc19_24.1: @F.%pattern_type (%pattern_type.51d) = at_binding_pattern x, %x.param_patt.loc19_24.1 [symbolic = %x.patt.loc19_24.2 (constants.%x.patt.800c32.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19_10.1: type = splice_block %.loc19_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc19_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc19_7.1 (constants.%T)] diff --git a/toolchain/check/testdata/generic/complete_type.carbon b/toolchain/check/testdata/generic/complete_type.carbon index 59e4ab102905..9c5b82dc6e23 100644 --- a/toolchain/check/testdata/generic/complete_type.carbon +++ b/toolchain/check/testdata/generic/complete_type.carbon @@ -85,7 +85,7 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -133,7 +133,7 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: %T.patt.loc6_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_13.1: type = splice_block %.loc6_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_10.1 (constants.%T)] @@ -217,7 +217,7 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -265,7 +265,7 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: %v.patt.loc6_17.1: @F.%pattern_type (%pattern_type.4f4) = at_binding_pattern v, %v.param_patt.loc6_17.1 [symbolic = %v.patt.loc6_17.2 (constants.%v.patt.ddf)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -357,7 +357,7 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -406,7 +406,7 @@ fn G(p: B*) { F(B, p); } // CHECK:STDOUT: %p.patt.loc6_17.1: @F.%pattern_type.loc6 (%pattern_type.4f4) = at_binding_pattern p, %p.param_patt.loc6_17.1 [symbolic = %p.patt.loc6_17.2 (constants.%p.patt.14c)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] diff --git a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon index f4a31d669f5d..9a07f498fdd4 100644 --- a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon +++ b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon @@ -78,7 +78,7 @@ fn H(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %A.type.55a: type = generic_interface_type @A [concrete] // CHECK:STDOUT: %A.generic: %A.type.55a = struct_value () [concrete] @@ -88,17 +88,20 @@ fn H(T:! type) { // CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete] // CHECK:STDOUT: %C.1d0e8a.1: type = class_type @C, @C(%CC) [symbolic] // CHECK:STDOUT: %A.type.acd3aa.2: type = facet_type <@A, @A(%CC)> [symbolic] -// CHECK:STDOUT: %.Self.049e23.1: %A.type.acd3aa.2 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.14f: %A.type.acd3aa.2 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %A.assoc_type.447662.2: type = assoc_entity_type @A, @A(%CC) [symbolic] // CHECK:STDOUT: %assoc0.e0998a.2: %A.assoc_type.447662.2 = assoc_entity element0, @A.WithSelf.%X [symbolic] // CHECK:STDOUT: %require_complete.21f: = require_complete_type %A.type.acd3aa.2 [symbolic] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.049e23.1 [symbolic] -// CHECK:STDOUT: %A.lookup_impl_witness.7746a3.1: = lookup_impl_witness %.Self.049e23.1, @A, @A(%CC) [symbolic] -// CHECK:STDOUT: %impl.elem0.bf516c.1: type = impl_witness_access %A.lookup_impl_witness.7746a3.1, element0 [symbolic] -// CHECK:STDOUT: %A_where.type.df6ef4.1: type = facet_type <@A, @A(%CC) where %impl.elem0.bf516c.1 = %CC> [symbolic] -// CHECK:STDOUT: %pattern_type.4e9: type = pattern_type %A_where.type.df6ef4.1 [symbolic] -// CHECK:STDOUT: %T.patt.17c: %pattern_type.4e9 = symbolic_binding_pattern T, 1 [symbolic] -// CHECK:STDOUT: %T.9e3: %A_where.type.df6ef4.1 = symbolic_binding T, 1 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.14f [symbolic] +// CHECK:STDOUT: %A.lookup_impl_witness.8d4: = lookup_impl_witness %.Self.frozen.14f, @A, @A(%CC) [symbolic] +// CHECK:STDOUT: %impl.elem0.796: type = impl_witness_access %A.lookup_impl_witness.8d4, element0 [symbolic] +// CHECK:STDOUT: %.Self.a16688.1: %A.type.acd3aa.2 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %A.lookup_impl_witness.b03c54.1: = lookup_impl_witness %.Self.a16688.1, @A, @A(%CC) [symbolic] +// CHECK:STDOUT: %impl.elem0.14e5d2.1: type = impl_witness_access %A.lookup_impl_witness.b03c54.1, element0 [symbolic] +// CHECK:STDOUT: %A_where.type.da43f4.1: type = facet_type <@A, @A(%CC) where %impl.elem0.14e5d2.1 = %CC> [symbolic] +// CHECK:STDOUT: %pattern_type.b1a: type = pattern_type %A_where.type.da43f4.1 [symbolic] +// CHECK:STDOUT: %T.patt.0e4: %pattern_type.b1a = symbolic_binding_pattern T, 1 [symbolic] +// CHECK:STDOUT: %T.422: %A_where.type.da43f4.1 = symbolic_binding T, 1 [symbolic] // CHECK:STDOUT: %C.F.type.55fb78.1: type = fn_type @C.F, @C(%CC) [symbolic] // CHECK:STDOUT: %C.F.6da92d.1: %C.F.type.55fb78.1 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -131,27 +134,31 @@ fn H(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %C.F.decl: @C.%C.F.type (%C.F.type.55fb78.1) = fn_decl @C.F [symbolic = @C.%C.F (constants.%C.F.6da92d.1)] { -// CHECK:STDOUT: %T.patt.loc11_16.1: @C.F.%pattern_type (%pattern_type.4e9) = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc11_16.2 (constants.%T.patt.17c)] +// CHECK:STDOUT: %T.patt.loc11_16.1: @C.F.%pattern_type (%pattern_type.b1a) = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc11_16.2 (constants.%T.patt.0e4)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc11_25.1: type = splice_block %.loc11_25.2 [symbolic = %A_where.type (constants.%A_where.type.df6ef4.1)] { -// CHECK:STDOUT: %.Self.loc11_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc11_25.1: type = splice_block %.loc11_25.2 [symbolic = %A_where.type (constants.%A_where.type.da43f4.1)] { +// CHECK:STDOUT: %.Self.frozen.loc11_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: %A.type.55a = name_ref A, file.%A.decl [concrete = constants.%A.generic] // CHECK:STDOUT: %CC.ref.loc11_21: type = name_ref CC, @C.%CC.loc6_11.2 [symbolic = %CC (constants.%CC)] // CHECK:STDOUT: %A.type.loc11_23.2: type = facet_type <@A, @A(constants.%CC)> [symbolic = %A.type.loc11_23.1 (constants.%A.type.acd3aa.2)] -// CHECK:STDOUT: %.Self.loc11_25.2: @C.F.%A.type.loc11_23.1 (%A.type.acd3aa.2) = symbolic_binding .Self [symbolic = %.Self.loc11_25.1 (constants.%.Self.049e23.1)] -// CHECK:STDOUT: %.Self.ref: @C.F.%A.type.loc11_23.1 (%A.type.acd3aa.2) = name_ref .Self, %.Self.loc11_25.2 [symbolic = %.Self.loc11_25.1 (constants.%.Self.049e23.1)] -// CHECK:STDOUT: %.Self.as_type.loc11_31.2: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc11_31.1 (constants.%.Self.as_type)] -// CHECK:STDOUT: %.loc11_31.1: type = converted %.Self.ref, %.Self.as_type.loc11_31.2 [symbolic = %.Self.as_type.loc11_31.1 (constants.%.Self.as_type)] -// CHECK:STDOUT: %.loc11_31.2: @C.F.%A.assoc_type (%A.assoc_type.447662.2) = specific_constant @X.%assoc0, @A.WithSelf(constants.%CC, constants.%.Self.049e23.1) [symbolic = %assoc0 (constants.%assoc0.e0998a.2)] +// CHECK:STDOUT: %.Self.frozen.loc11_25.2: @C.F.%A.type.loc11_23.1 (%A.type.acd3aa.2) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_25.1 (constants.%.Self.frozen.14f)] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.type.loc11_23.2 [concrete] +// CHECK:STDOUT: %.Self.ref: @C.F.%A.type.loc11_23.1 (%A.type.acd3aa.2) = name_ref .Self, %.Self.frozen.loc11_25.2 [symbolic = %.Self.frozen.loc11_25.1 (constants.%.Self.frozen.14f)] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] +// CHECK:STDOUT: %.loc11_31.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] +// CHECK:STDOUT: %.loc11_31.2: @C.F.%A.assoc_type (%A.assoc_type.447662.2) = specific_constant @X.%assoc0, @A.WithSelf(constants.%CC, constants.%.Self.frozen.14f) [symbolic = %assoc0 (constants.%assoc0.e0998a.2)] // CHECK:STDOUT: %X.ref: @C.F.%A.assoc_type (%A.assoc_type.447662.2) = name_ref X, %.loc11_31.2 [symbolic = %assoc0 (constants.%assoc0.e0998a.2)] -// CHECK:STDOUT: %impl.elem0.loc11_31.2: type = impl_witness_access constants.%A.lookup_impl_witness.7746a3.1, element0 [symbolic = %impl.elem0.loc11_31.1 (constants.%impl.elem0.bf516c.1)] +// CHECK:STDOUT: %impl.elem0.loc11_31.3: type = impl_witness_access constants.%A.lookup_impl_witness.8d4, element0 [symbolic = %impl.elem0.loc11_31.1 (constants.%impl.elem0.796)] // CHECK:STDOUT: %CC.ref.loc11_36: type = name_ref CC, @C.%CC.loc6_11.2 [symbolic = %CC (constants.%CC)] -// CHECK:STDOUT: %.loc11_25.2: type = where_expr [symbolic = %A_where.type (constants.%A_where.type.df6ef4.1)] { -// CHECK:STDOUT: requirement_base_facet_type %A.type.loc11_23.2 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11_31.2, %CC.ref.loc11_36 +// CHECK:STDOUT: %rewrite.loc11_34.1 = requirement_rewrite %impl.elem0.loc11_31.3, %CC.ref.loc11_36 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_31.4: type = impl_witness_access constants.%A.lookup_impl_witness.b03c54.1, element0 [symbolic = %impl.elem0.loc11_31.2 (constants.%impl.elem0.14e5d2.1)] +// CHECK:STDOUT: %rewrite.loc11_34.2 = requirement_rewrite %impl.elem0.loc11_31.4, %CC.ref.loc11_36 [concrete] +// CHECK:STDOUT: %.loc11_25.2: type = where_expr [symbolic = %A_where.type (constants.%A_where.type.da43f4.1)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.type.loc11_23.2 [concrete] +// CHECK:STDOUT: %rewrite.loc11_34.2 = requirement_rewrite %impl.elem0.loc11_31.4, %CC.ref.loc11_36 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc11_16.2: @C.F.%A_where.type (%A_where.type.df6ef4.1) = symbolic_binding T, 1 [symbolic = %T.loc11_16.1 (constants.%T.9e3)] +// CHECK:STDOUT: %T.loc11_16.2: @C.F.%A_where.type (%A_where.type.da43f4.1) = symbolic_binding T, 1 [symbolic = %T.loc11_16.1 (constants.%T.422)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: complete_type_witness = %complete_type @@ -182,20 +189,23 @@ fn H(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @C.F(@C.%CC.loc6_11.2: type, %T.loc11_16.2: @C.F.%A_where.type (%A_where.type.df6ef4.1)) { +// CHECK:STDOUT: generic fn @C.F(@C.%CC.loc6_11.2: type, %T.loc11_16.2: @C.F.%A_where.type (%A_where.type.da43f4.1)) { // CHECK:STDOUT: %CC: type = symbolic_binding CC, 0 [symbolic = %CC (constants.%CC)] // CHECK:STDOUT: %A.type.loc11_23.1: type = facet_type <@A, @A(%CC)> [symbolic = %A.type.loc11_23.1 (constants.%A.type.acd3aa.2)] -// CHECK:STDOUT: %.Self.loc11_25.1: @C.F.%A.type.loc11_23.1 (%A.type.acd3aa.2) = symbolic_binding .Self [symbolic = %.Self.loc11_25.1 (constants.%.Self.049e23.1)] +// CHECK:STDOUT: %.Self.frozen.loc11_25.1: @C.F.%A.type.loc11_23.1 (%A.type.acd3aa.2) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_25.1 (constants.%.Self.frozen.14f)] // CHECK:STDOUT: %require_complete: = require_complete_type %A.type.loc11_23.1 [symbolic = %require_complete (constants.%require_complete.21f)] -// CHECK:STDOUT: %.Self.as_type.loc11_31.1: type = facet_access_type %.Self.loc11_25.1 [symbolic = %.Self.as_type.loc11_31.1 (constants.%.Self.as_type)] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc11_25.1 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A, @A(%CC) [symbolic = %A.assoc_type (constants.%A.assoc_type.447662.2)] // CHECK:STDOUT: %assoc0: @C.F.%A.assoc_type (%A.assoc_type.447662.2) = assoc_entity element0, @A.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.e0998a.2)] -// CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self.loc11_25.1, @A, @A(%CC) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.7746a3.1)] -// CHECK:STDOUT: %impl.elem0.loc11_31.1: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_31.1 (constants.%impl.elem0.bf516c.1)] -// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%CC) where %impl.elem0.loc11_31.1 = %CC> [symbolic = %A_where.type (constants.%A_where.type.df6ef4.1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type [symbolic = %pattern_type (constants.%pattern_type.4e9)] -// CHECK:STDOUT: %T.patt.loc11_16.2: @C.F.%pattern_type (%pattern_type.4e9) = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc11_16.2 (constants.%T.patt.17c)] -// CHECK:STDOUT: %T.loc11_16.1: @C.F.%A_where.type (%A_where.type.df6ef4.1) = symbolic_binding T, 1 [symbolic = %T.loc11_16.1 (constants.%T.9e3)] +// CHECK:STDOUT: %A.lookup_impl_witness.loc11_31.1: = lookup_impl_witness %.Self.frozen.loc11_25.1, @A, @A(%CC) [symbolic = %A.lookup_impl_witness.loc11_31.1 (constants.%A.lookup_impl_witness.8d4)] +// CHECK:STDOUT: %impl.elem0.loc11_31.1: type = impl_witness_access %A.lookup_impl_witness.loc11_31.1, element0 [symbolic = %impl.elem0.loc11_31.1 (constants.%impl.elem0.796)] +// CHECK:STDOUT: %.Self: @C.F.%A.type.loc11_23.1 (%A.type.acd3aa.2) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.a16688.1)] +// CHECK:STDOUT: %A.lookup_impl_witness.loc11_31.2: = lookup_impl_witness %.Self, @A, @A(%CC) [symbolic = %A.lookup_impl_witness.loc11_31.2 (constants.%A.lookup_impl_witness.b03c54.1)] +// CHECK:STDOUT: %impl.elem0.loc11_31.2: type = impl_witness_access %A.lookup_impl_witness.loc11_31.2, element0 [symbolic = %impl.elem0.loc11_31.2 (constants.%impl.elem0.14e5d2.1)] +// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%CC) where %impl.elem0.loc11_31.2 = %CC> [symbolic = %A_where.type (constants.%A_where.type.da43f4.1)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type [symbolic = %pattern_type (constants.%pattern_type.b1a)] +// CHECK:STDOUT: %T.patt.loc11_16.2: @C.F.%pattern_type (%pattern_type.b1a) = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc11_16.2 (constants.%T.patt.0e4)] +// CHECK:STDOUT: %T.loc11_16.1: @C.F.%A_where.type (%A_where.type.da43f4.1) = symbolic_binding T, 1 [symbolic = %T.loc11_16.1 (constants.%T.422)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -240,20 +250,23 @@ fn H(T:! type) { // CHECK:STDOUT: %C.F => constants.%C.F.6da92d.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C.F(constants.%CC, constants.%T.9e3) { +// CHECK:STDOUT: specific @C.F(constants.%CC, constants.%T.422) { // CHECK:STDOUT: %CC => constants.%CC // CHECK:STDOUT: %A.type.loc11_23.1 => constants.%A.type.acd3aa.2 -// CHECK:STDOUT: %.Self.loc11_25.1 => constants.%.Self.049e23.1 +// CHECK:STDOUT: %.Self.frozen.loc11_25.1 => constants.%.Self.frozen.14f // CHECK:STDOUT: %require_complete => constants.%require_complete.21f -// CHECK:STDOUT: %.Self.as_type.loc11_31.1 => constants.%.Self.as_type +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type // CHECK:STDOUT: %A.assoc_type => constants.%A.assoc_type.447662.2 // CHECK:STDOUT: %assoc0 => constants.%assoc0.e0998a.2 -// CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.lookup_impl_witness.7746a3.1 -// CHECK:STDOUT: %impl.elem0.loc11_31.1 => constants.%impl.elem0.bf516c.1 -// CHECK:STDOUT: %A_where.type => constants.%A_where.type.df6ef4.1 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4e9 -// CHECK:STDOUT: %T.patt.loc11_16.2 => constants.%T.patt.17c -// CHECK:STDOUT: %T.loc11_16.1 => constants.%T.9e3 +// CHECK:STDOUT: %A.lookup_impl_witness.loc11_31.1 => constants.%A.lookup_impl_witness.8d4 +// CHECK:STDOUT: %impl.elem0.loc11_31.1 => constants.%impl.elem0.796 +// CHECK:STDOUT: %.Self => constants.%.Self.a16688.1 +// CHECK:STDOUT: %A.lookup_impl_witness.loc11_31.2 => constants.%A.lookup_impl_witness.b03c54.1 +// CHECK:STDOUT: %impl.elem0.loc11_31.2 => constants.%impl.elem0.14e5d2.1 +// CHECK:STDOUT: %A_where.type => constants.%A_where.type.da43f4.1 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.b1a +// CHECK:STDOUT: %T.patt.loc11_16.2 => constants.%T.patt.0e4 +// CHECK:STDOUT: %T.loc11_16.1 => constants.%T.422 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D(constants.%DD) { @@ -313,7 +326,7 @@ fn H(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %AA.patt: %pattern_type.98f = symbolic_binding_pattern AA, 0 [symbolic] // CHECK:STDOUT: %AA: type = symbolic_binding AA, 0 [symbolic] @@ -325,20 +338,23 @@ fn H(T:! type) { // CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, @A.WithSelf.%X [symbolic] // CHECK:STDOUT: %B.type.d1b: type = generic_interface_type @B [concrete] // CHECK:STDOUT: %B.generic: %B.type.d1b = struct_value () [concrete] -// CHECK:STDOUT: %.Self.049e23.1: %A.type.acd3aa.1 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.14f: %A.type.acd3aa.1 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %require_complete.21f: = require_complete_type %A.type.acd3aa.1 [symbolic] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.049e23.1 [symbolic] -// CHECK:STDOUT: %A.lookup_impl_witness.7746a3.1: = lookup_impl_witness %.Self.049e23.1, @A, @A(%AA) [symbolic] -// CHECK:STDOUT: %impl.elem0.bf516c.1: type = impl_witness_access %A.lookup_impl_witness.7746a3.1, element0 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.14f [symbolic] +// CHECK:STDOUT: %A.lookup_impl_witness.8d4: = lookup_impl_witness %.Self.frozen.14f, @A, @A(%AA) [symbolic] +// CHECK:STDOUT: %impl.elem0.796: type = impl_witness_access %A.lookup_impl_witness.8d4, element0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %A_where.type.32f51e.1: type = facet_type <@A, @A(%AA) where %impl.elem0.bf516c.1 = %empty_tuple.type> [symbolic] -// CHECK:STDOUT: %pattern_type.82b: type = pattern_type %A_where.type.32f51e.1 [symbolic] -// CHECK:STDOUT: %BB.patt.487: %pattern_type.82b = symbolic_binding_pattern BB, 1 [symbolic] -// CHECK:STDOUT: %BB.2f1: %A_where.type.32f51e.1 = symbolic_binding BB, 1 [symbolic] -// CHECK:STDOUT: %BB.as_type: type = facet_access_type %BB.2f1 [symbolic] +// CHECK:STDOUT: %.Self.a16688.1: %A.type.acd3aa.1 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %A.lookup_impl_witness.b03c54.1: = lookup_impl_witness %.Self.a16688.1, @A, @A(%AA) [symbolic] +// CHECK:STDOUT: %impl.elem0.14e5d2.1: type = impl_witness_access %A.lookup_impl_witness.b03c54.1, element0 [symbolic] +// CHECK:STDOUT: %A_where.type.ce6fa0.1: type = facet_type <@A, @A(%AA) where %impl.elem0.14e5d2.1 = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %pattern_type.98d: type = pattern_type %A_where.type.ce6fa0.1 [symbolic] +// CHECK:STDOUT: %BB.patt.aea: %pattern_type.98d = symbolic_binding_pattern BB, 1 [symbolic] +// CHECK:STDOUT: %BB.6ca: %A_where.type.ce6fa0.1 = symbolic_binding BB, 1 [symbolic] +// 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: %B.impl_witness.f14: = impl_witness @BB.as_type.as.B.impl.%B.impl_witness_table, @BB.as_type.as.B.impl(%AA, %BB.2f1) [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] // CHECK:STDOUT: %DD: type = symbolic_binding DD, 0 [symbolic] @@ -366,9 +382,9 @@ fn H(T:! type) { // CHECK:STDOUT: file { // CHECK:STDOUT: impl_decl @BB.as_type.as.B.impl [concrete] { // CHECK:STDOUT: %AA.patt.loc9_16.1: %pattern_type.98f = symbolic_binding_pattern AA, 0 [symbolic = %AA.patt.loc9_16.2 (constants.%AA.patt)] -// CHECK:STDOUT: %BB.patt.loc9_27.1: @BB.as_type.as.B.impl.%pattern_type (%pattern_type.82b) = symbolic_binding_pattern BB, 1 [symbolic = %BB.patt.loc9_27.2 (constants.%BB.patt.487)] +// CHECK:STDOUT: %BB.patt.loc9_27.1: @BB.as_type.as.B.impl.%pattern_type (%pattern_type.98d) = symbolic_binding_pattern BB, 1 [symbolic = %BB.patt.loc9_27.2 (constants.%BB.patt.aea)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %BB.ref: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.32f51e.1) = name_ref BB, %BB.loc9_27.1 [symbolic = %BB.loc9_27.2 (constants.%BB.2f1)] +// CHECK:STDOUT: %BB.ref: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.ce6fa0.1) = name_ref BB, %BB.loc9_27.1 [symbolic = %BB.loc9_27.2 (constants.%BB.6ca)] // CHECK:STDOUT: %BB.as_type.loc9_51.1: type = facet_access_type %BB.ref [symbolic = %BB.as_type.loc9_51.2 (constants.%BB.as_type)] // CHECK:STDOUT: %.loc9_51: type = converted %BB.ref, %BB.as_type.loc9_51.1 [symbolic = %BB.as_type.loc9_51.2 (constants.%BB.as_type)] // CHECK:STDOUT: %B.ref: %B.type.d1b = name_ref B, file.%B.decl [concrete = constants.%B.generic] @@ -376,59 +392,66 @@ fn H(T:! type) { // CHECK:STDOUT: %ptr.loc9_61.1: type = ptr_type %AA.ref.loc9_59 [symbolic = %ptr.loc9_61.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %B.type.loc9_62.1: type = facet_type <@B, @B(constants.%ptr.e8f8f9.1)> [symbolic = %B.type.loc9_62.2 (constants.%B.type.4a0be4.1)] // CHECK:STDOUT: %.loc9_19.1: type = splice_block %.loc9_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc9_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc9_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc9_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %AA.loc9_16.1: type = symbolic_binding AA, 0 [symbolic = %AA.loc9_16.2 (constants.%AA)] -// CHECK:STDOUT: %.loc9_36.1: type = splice_block %.loc9_36.2 [symbolic = %A_where.type (constants.%A_where.type.32f51e.1)] { -// CHECK:STDOUT: %.Self.loc9_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc9_36.1: type = splice_block %.loc9_36.2 [symbolic = %A_where.type (constants.%A_where.type.ce6fa0.1)] { +// CHECK:STDOUT: %.Self.frozen.loc9_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: %A.type.55a = name_ref A, file.%A.decl [concrete = constants.%A.generic] // CHECK:STDOUT: %AA.ref.loc9_32: type = name_ref AA, %AA.loc9_16.1 [symbolic = %AA.loc9_16.2 (constants.%AA)] // CHECK:STDOUT: %A.type.loc9_34.1: type = facet_type <@A, @A(constants.%AA)> [symbolic = %A.type.loc9_34.2 (constants.%A.type.acd3aa.1)] -// CHECK:STDOUT: %.Self.loc9_36.1: @BB.as_type.as.B.impl.%A.type.loc9_34.2 (%A.type.acd3aa.1) = symbolic_binding .Self [symbolic = %.Self.loc9_36.2 (constants.%.Self.049e23.1)] -// CHECK:STDOUT: %.Self.ref: @BB.as_type.as.B.impl.%A.type.loc9_34.2 (%A.type.acd3aa.1) = name_ref .Self, %.Self.loc9_36.1 [symbolic = %.Self.loc9_36.2 (constants.%.Self.049e23.1)] -// CHECK:STDOUT: %.Self.as_type.loc9_42.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc9_42.2 (constants.%.Self.as_type)] -// CHECK:STDOUT: %.loc9_42.1: type = converted %.Self.ref, %.Self.as_type.loc9_42.1 [symbolic = %.Self.as_type.loc9_42.2 (constants.%.Self.as_type)] -// CHECK:STDOUT: %.loc9_42.2: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = specific_constant @X.%assoc0, @A.WithSelf(constants.%AA, constants.%.Self.049e23.1) [symbolic = %assoc0 (constants.%assoc0)] +// CHECK:STDOUT: %.Self.frozen.loc9_36.1: @BB.as_type.as.B.impl.%A.type.loc9_34.2 (%A.type.acd3aa.1) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_36.2 (constants.%.Self.frozen.14f)] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.type.loc9_34.1 [concrete] +// CHECK:STDOUT: %.Self.ref: @BB.as_type.as.B.impl.%A.type.loc9_34.2 (%A.type.acd3aa.1) = name_ref .Self, %.Self.frozen.loc9_36.1 [symbolic = %.Self.frozen.loc9_36.2 (constants.%.Self.frozen.14f)] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] +// CHECK:STDOUT: %.loc9_42.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] +// CHECK:STDOUT: %.loc9_42.2: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = specific_constant @X.%assoc0, @A.WithSelf(constants.%AA, constants.%.Self.frozen.14f) [symbolic = %assoc0 (constants.%assoc0)] // CHECK:STDOUT: %X.ref: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = name_ref X, %.loc9_42.2 [symbolic = %assoc0 (constants.%assoc0)] -// CHECK:STDOUT: %impl.elem0.loc9_42.1: type = impl_witness_access constants.%A.lookup_impl_witness.7746a3.1, element0 [symbolic = %impl.elem0.loc9_42.2 (constants.%impl.elem0.bf516c.1)] +// CHECK:STDOUT: %impl.elem0.loc9_42.1: type = impl_witness_access constants.%A.lookup_impl_witness.8d4, element0 [symbolic = %impl.elem0.loc9_42.3 (constants.%impl.elem0.796)] // CHECK:STDOUT: %.loc9_48.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_48.2: type = converted %.loc9_48.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc9_36.2: type = where_expr [symbolic = %A_where.type (constants.%A_where.type.32f51e.1)] { -// CHECK:STDOUT: requirement_base_facet_type %A.type.loc9_34.1 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc9_42.1, %.loc9_48.2 +// CHECK:STDOUT: %rewrite.loc9_45.1 = requirement_rewrite %impl.elem0.loc9_42.1, %.loc9_48.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc9_42.2: type = impl_witness_access constants.%A.lookup_impl_witness.b03c54.1, element0 [symbolic = %impl.elem0.loc9_42.4 (constants.%impl.elem0.14e5d2.1)] +// CHECK:STDOUT: %rewrite.loc9_45.2 = requirement_rewrite %impl.elem0.loc9_42.2, %.loc9_48.2 [concrete] +// CHECK:STDOUT: %.loc9_36.2: type = where_expr [symbolic = %A_where.type (constants.%A_where.type.ce6fa0.1)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.type.loc9_34.1 [concrete] +// CHECK:STDOUT: %rewrite.loc9_45.2 = requirement_rewrite %impl.elem0.loc9_42.2, %.loc9_48.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %BB.loc9_27.1: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.32f51e.1) = symbolic_binding BB, 1 [symbolic = %BB.loc9_27.2 (constants.%BB.2f1)] +// CHECK:STDOUT: %BB.loc9_27.1: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.ce6fa0.1) = symbolic_binding BB, 1 [symbolic = %BB.loc9_27.2 (constants.%BB.6ca)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @BB.as_type.as.B.impl(%AA.loc9_16.1: type, %BB.loc9_27.1: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.32f51e.1)) { +// CHECK:STDOUT: generic impl @BB.as_type.as.B.impl(%AA.loc9_16.1: type, %BB.loc9_27.1: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.ce6fa0.1)) { // CHECK:STDOUT: %AA.patt.loc9_16.2: %pattern_type.98f = symbolic_binding_pattern AA, 0 [symbolic = %AA.patt.loc9_16.2 (constants.%AA.patt)] // CHECK:STDOUT: %AA.loc9_16.2: type = symbolic_binding AA, 0 [symbolic = %AA.loc9_16.2 (constants.%AA)] // CHECK:STDOUT: %A.type.loc9_34.2: type = facet_type <@A, @A(%AA.loc9_16.2)> [symbolic = %A.type.loc9_34.2 (constants.%A.type.acd3aa.1)] -// CHECK:STDOUT: %.Self.loc9_36.2: @BB.as_type.as.B.impl.%A.type.loc9_34.2 (%A.type.acd3aa.1) = symbolic_binding .Self [symbolic = %.Self.loc9_36.2 (constants.%.Self.049e23.1)] +// CHECK:STDOUT: %.Self.frozen.loc9_36.2: @BB.as_type.as.B.impl.%A.type.loc9_34.2 (%A.type.acd3aa.1) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_36.2 (constants.%.Self.frozen.14f)] // CHECK:STDOUT: %require_complete.loc9_42: = require_complete_type %A.type.loc9_34.2 [symbolic = %require_complete.loc9_42 (constants.%require_complete.21f)] -// CHECK:STDOUT: %.Self.as_type.loc9_42.2: type = facet_access_type %.Self.loc9_36.2 [symbolic = %.Self.as_type.loc9_42.2 (constants.%.Self.as_type)] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc9_36.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] // CHECK:STDOUT: %A.assoc_type: type = assoc_entity_type @A, @A(%AA.loc9_16.2) [symbolic = %A.assoc_type (constants.%A.assoc_type)] // CHECK:STDOUT: %assoc0: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = assoc_entity element0, @A.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0)] -// CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self.loc9_36.2, @A, @A(%AA.loc9_16.2) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.7746a3.1)] -// CHECK:STDOUT: %impl.elem0.loc9_42.2: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_42.2 (constants.%impl.elem0.bf516c.1)] -// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%AA.loc9_16.2) where %impl.elem0.loc9_42.2 = constants.%empty_tuple.type> [symbolic = %A_where.type (constants.%A_where.type.32f51e.1)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type [symbolic = %pattern_type (constants.%pattern_type.82b)] -// CHECK:STDOUT: %BB.patt.loc9_27.2: @BB.as_type.as.B.impl.%pattern_type (%pattern_type.82b) = symbolic_binding_pattern BB, 1 [symbolic = %BB.patt.loc9_27.2 (constants.%BB.patt.487)] -// CHECK:STDOUT: %BB.loc9_27.2: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.32f51e.1) = symbolic_binding BB, 1 [symbolic = %BB.loc9_27.2 (constants.%BB.2f1)] +// CHECK:STDOUT: %A.lookup_impl_witness.loc9_42.1: = lookup_impl_witness %.Self.frozen.loc9_36.2, @A, @A(%AA.loc9_16.2) [symbolic = %A.lookup_impl_witness.loc9_42.1 (constants.%A.lookup_impl_witness.8d4)] +// CHECK:STDOUT: %impl.elem0.loc9_42.3: type = impl_witness_access %A.lookup_impl_witness.loc9_42.1, element0 [symbolic = %impl.elem0.loc9_42.3 (constants.%impl.elem0.796)] +// CHECK:STDOUT: %.Self: @BB.as_type.as.B.impl.%A.type.loc9_34.2 (%A.type.acd3aa.1) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.a16688.1)] +// CHECK:STDOUT: %A.lookup_impl_witness.loc9_42.2: = lookup_impl_witness %.Self, @A, @A(%AA.loc9_16.2) [symbolic = %A.lookup_impl_witness.loc9_42.2 (constants.%A.lookup_impl_witness.b03c54.1)] +// CHECK:STDOUT: %impl.elem0.loc9_42.4: type = impl_witness_access %A.lookup_impl_witness.loc9_42.2, element0 [symbolic = %impl.elem0.loc9_42.4 (constants.%impl.elem0.14e5d2.1)] +// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%AA.loc9_16.2) where %impl.elem0.loc9_42.4 = constants.%empty_tuple.type> [symbolic = %A_where.type (constants.%A_where.type.ce6fa0.1)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type [symbolic = %pattern_type (constants.%pattern_type.98d)] +// CHECK:STDOUT: %BB.patt.loc9_27.2: @BB.as_type.as.B.impl.%pattern_type (%pattern_type.98d) = symbolic_binding_pattern BB, 1 [symbolic = %BB.patt.loc9_27.2 (constants.%BB.patt.aea)] +// CHECK:STDOUT: %BB.loc9_27.2: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.ce6fa0.1) = symbolic_binding BB, 1 [symbolic = %BB.loc9_27.2 (constants.%BB.6ca)] // CHECK:STDOUT: %BB.as_type.loc9_51.2: type = facet_access_type %BB.loc9_27.2 [symbolic = %BB.as_type.loc9_51.2 (constants.%BB.as_type)] // CHECK:STDOUT: %ptr.loc9_61.2: type = ptr_type %AA.loc9_16.2 [symbolic = %ptr.loc9_61.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %B.type.loc9_62.2: type = facet_type <@B, @B(%ptr.loc9_61.2)> [symbolic = %B.type.loc9_62.2 (constants.%B.type.4a0be4.1)] -// CHECK:STDOUT: %B.impl_witness.loc9_64.2: = impl_witness %B.impl_witness_table, @BB.as_type.as.B.impl(%AA.loc9_16.2, %BB.loc9_27.2) [symbolic = %B.impl_witness.loc9_64.2 (constants.%B.impl_witness.f14)] +// CHECK:STDOUT: %B.impl_witness.loc9_64.2: = impl_witness %B.impl_witness_table, @BB.as_type.as.B.impl(%AA.loc9_16.2, %BB.loc9_27.2) [symbolic = %B.impl_witness.loc9_64.2 (constants.%B.impl_witness.8cc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc9_62: = require_complete_type %B.type.loc9_62.2 [symbolic = %require_complete.loc9_62 (constants.%require_complete.a5dc9d.1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %.loc9_51 as %B.type.loc9_62.1 { // CHECK:STDOUT: %B.impl_witness_table = impl_witness_table (), @BB.as_type.as.B.impl [concrete] -// CHECK:STDOUT: %B.impl_witness.loc9_64.1: = impl_witness %B.impl_witness_table, @BB.as_type.as.B.impl(constants.%AA, constants.%BB.2f1) [symbolic = %B.impl_witness.loc9_64.2 (constants.%B.impl_witness.f14)] +// CHECK:STDOUT: %B.impl_witness.loc9_64.1: = impl_witness %B.impl_witness_table, @BB.as_type.as.B.impl(constants.%AA, constants.%BB.6ca) [symbolic = %B.impl_witness.loc9_64.2 (constants.%B.impl_witness.8cc)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: extend %B.type.loc9_62.1 @@ -480,25 +503,28 @@ fn H(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @BB.as_type.as.B.impl(constants.%AA, constants.%BB.2f1) { +// CHECK:STDOUT: specific @BB.as_type.as.B.impl(constants.%AA, constants.%BB.6ca) { // CHECK:STDOUT: %AA.patt.loc9_16.2 => constants.%AA.patt // CHECK:STDOUT: %AA.loc9_16.2 => constants.%AA // CHECK:STDOUT: %A.type.loc9_34.2 => constants.%A.type.acd3aa.1 -// CHECK:STDOUT: %.Self.loc9_36.2 => constants.%.Self.049e23.1 +// CHECK:STDOUT: %.Self.frozen.loc9_36.2 => constants.%.Self.frozen.14f // CHECK:STDOUT: %require_complete.loc9_42 => constants.%require_complete.21f -// CHECK:STDOUT: %.Self.as_type.loc9_42.2 => constants.%.Self.as_type +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type // CHECK:STDOUT: %A.assoc_type => constants.%A.assoc_type // CHECK:STDOUT: %assoc0 => constants.%assoc0 -// CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.lookup_impl_witness.7746a3.1 -// CHECK:STDOUT: %impl.elem0.loc9_42.2 => constants.%impl.elem0.bf516c.1 -// CHECK:STDOUT: %A_where.type => constants.%A_where.type.32f51e.1 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.82b -// CHECK:STDOUT: %BB.patt.loc9_27.2 => constants.%BB.patt.487 -// CHECK:STDOUT: %BB.loc9_27.2 => constants.%BB.2f1 +// CHECK:STDOUT: %A.lookup_impl_witness.loc9_42.1 => constants.%A.lookup_impl_witness.8d4 +// CHECK:STDOUT: %impl.elem0.loc9_42.3 => constants.%impl.elem0.796 +// CHECK:STDOUT: %.Self => constants.%.Self.a16688.1 +// CHECK:STDOUT: %A.lookup_impl_witness.loc9_42.2 => constants.%A.lookup_impl_witness.b03c54.1 +// CHECK:STDOUT: %impl.elem0.loc9_42.4 => constants.%impl.elem0.14e5d2.1 +// CHECK:STDOUT: %A_where.type => constants.%A_where.type.ce6fa0.1 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.98d +// CHECK:STDOUT: %BB.patt.loc9_27.2 => constants.%BB.patt.aea +// CHECK:STDOUT: %BB.loc9_27.2 => constants.%BB.6ca // CHECK:STDOUT: %BB.as_type.loc9_51.2 => constants.%BB.as_type // CHECK:STDOUT: %ptr.loc9_61.2 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %B.type.loc9_62.2 => constants.%B.type.4a0be4.1 -// CHECK:STDOUT: %B.impl_witness.loc9_64.2 => constants.%B.impl_witness.f14 +// CHECK:STDOUT: %B.impl_witness.loc9_64.2 => constants.%B.impl_witness.8cc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D(constants.%DD) { diff --git a/toolchain/check/testdata/generic/local.carbon b/toolchain/check/testdata/generic/local.carbon index c8e3017b9df1..8dbb7b7ebed3 100644 --- a/toolchain/check/testdata/generic/local.carbon +++ b/toolchain/check/testdata/generic/local.carbon @@ -54,7 +54,7 @@ class C(C:! type) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -162,7 +162,7 @@ class C(C:! type) { // CHECK:STDOUT: %T.patt.loc5_12.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_12.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_15.1: type = splice_block %.loc5_15.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_15.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_12.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_12.1 (constants.%T)] @@ -246,7 +246,7 @@ class C(C:! type) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %C.patt: %pattern_type = symbolic_binding_pattern C, 0 [symbolic] // CHECK:STDOUT: %C.67d: type = symbolic_binding C, 0 [symbolic] @@ -294,7 +294,7 @@ class C(C:! type) { // CHECK:STDOUT: %C.patt.loc13_12.1: %pattern_type = symbolic_binding_pattern C, 0 [symbolic = %C.patt.loc13_12.2 (constants.%C.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_15.1: type = splice_block %.loc13_15.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_15.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %C.loc13_12.2: type = symbolic_binding C, 0 [symbolic = %C.loc13_12.1 (constants.%C.67d)] @@ -313,7 +313,7 @@ class C(C:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %C.patt: %pattern_type = symbolic_binding_pattern C, 0 [symbolic] // CHECK:STDOUT: %C.67d: type = symbolic_binding C, 0 [symbolic] @@ -341,7 +341,7 @@ class C(C:! type) { // CHECK:STDOUT: %C.patt.loc4_10.1: %pattern_type = symbolic_binding_pattern C, 0 [symbolic = %C.patt.loc4_10.2 (constants.%C.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %C.loc4_10.2: type = symbolic_binding C, 0 [symbolic = %C.loc4_10.1 (constants.%C.67d)] diff --git a/toolchain/check/testdata/generic/local_function.carbon b/toolchain/check/testdata/generic/local_function.carbon index 543744d82adf..ffa7b1af57f5 100644 --- a/toolchain/check/testdata/generic/local_function.carbon +++ b/toolchain/check/testdata/generic/local_function.carbon @@ -22,7 +22,7 @@ fn Test[unused T:! type]() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -51,7 +51,7 @@ fn Test[unused T:! type]() { // CHECK:STDOUT: %T.patt.loc15_17.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_17.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_20.1: type = splice_block %.loc15_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_17.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_17.1 (constants.%T)] diff --git a/toolchain/check/testdata/generic/template/convert.carbon b/toolchain/check/testdata/generic/template/convert.carbon index f41b0db6930b..0121ea7b2341 100644 --- a/toolchain/check/testdata/generic/template/convert.carbon +++ b/toolchain/check/testdata/generic/template/convert.carbon @@ -66,7 +66,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47011.1: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0, template [template] @@ -182,7 +182,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %i32.loc4: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc4_34: Core.Form = init_form %i32.loc4 [concrete = constants.%.795] // CHECK:STDOUT: %.loc4_19.1: type = splice_block %.loc4_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_16.2: type = symbolic_binding T, 0, template [template = %T.loc4_16.1 (constants.%T.67db0b.1)] @@ -374,7 +374,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47011.1: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0, template [template] @@ -460,7 +460,7 @@ fn Test(d: D) -> i32 { // CHECK:STDOUT: %i32.loc4: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc4_34: Core.Form = init_form %i32.loc4 [concrete = constants.%.795] // CHECK:STDOUT: %.loc4_19.1: type = splice_block %.loc4_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_16.2: type = symbolic_binding T, 0, template [template = %T.loc4_16.1 (constants.%T.67db0b.1)] diff --git a/toolchain/check/testdata/generic/template/member_access.carbon b/toolchain/check/testdata/generic/template/member_access.carbon index 1d2cdd85ae8f..9c650ad6c1d9 100644 --- a/toolchain/check/testdata/generic/template/member_access.carbon +++ b/toolchain/check/testdata/generic/template/member_access.carbon @@ -89,7 +89,7 @@ fn Test(e: E) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47011.1: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0, template [template] @@ -195,7 +195,7 @@ fn Test(e: E) { // CHECK:STDOUT: %i32.loc4: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc4_34: Core.Form = init_form %i32.loc4 [concrete = constants.%.795] // CHECK:STDOUT: %.loc4_19.1: type = splice_block %.loc4_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_16.2: type = symbolic_binding T, 0, template [template = %T.loc4_16.1 (constants.%T.67db0b.1)] @@ -339,7 +339,7 @@ fn Test(e: E) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47011.1: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0, template [template] @@ -423,7 +423,7 @@ fn Test(e: E) { // CHECK:STDOUT: %i32.loc4: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc4_34: Core.Form = init_form %i32.loc4 [concrete = constants.%.795] // CHECK:STDOUT: %.loc4_19.1: type = splice_block %.loc4_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_16.2: type = symbolic_binding T, 0, template [template = %T.loc4_16.1 (constants.%T.67db0b.1)] @@ -530,7 +530,7 @@ fn Test(e: E) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47011.1: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0, template [template] @@ -627,7 +627,7 @@ fn Test(e: E) { // CHECK:STDOUT: %i32.loc4: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc4_34: Core.Form = init_form %i32.loc4 [concrete = constants.%.795] // CHECK:STDOUT: %.loc4_19.1: type = splice_block %.loc4_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_16.2: type = symbolic_binding T, 0, template [template = %T.loc4_16.1 (constants.%T.67db0b.1)] diff --git a/toolchain/check/testdata/generic/template/unimplemented.carbon b/toolchain/check/testdata/generic/template/unimplemented.carbon index 0770e8293acc..469c36f5031e 100644 --- a/toolchain/check/testdata/generic/template/unimplemented.carbon +++ b/toolchain/check/testdata/generic/template/unimplemented.carbon @@ -75,7 +75,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T: type = symbolic_binding T, 0, template [template] @@ -125,7 +125,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc6_34: Core.Form = init_form %i32 [concrete = constants.%.795] // CHECK:STDOUT: %.loc6_19.1: type = splice_block %.loc6_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_16.2: type = symbolic_binding T, 0, template [template = %T.loc6_16.1 (constants.%T)] @@ -183,7 +183,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete] // CHECK:STDOUT: %complete_type.cdf: = complete_type_witness %struct_type.n [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98b: type = pattern_type %C [concrete] // CHECK:STDOUT: %c.patt: %pattern_type.98b = symbolic_binding_pattern c, 0, template [template] // CHECK:STDOUT: %c: %C = symbolic_binding c, 0, template [template] @@ -224,7 +224,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc11_25: Core.Form = init_form %i32 [concrete = constants.%.795] // CHECK:STDOUT: %.loc11_19: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %c.loc11_16.2: %C = symbolic_binding c, 0, template [template = %c.loc11_16.1 (constants.%c)] @@ -271,7 +271,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %pattern_type.429: type = pattern_type %Destroy.type [concrete] // CHECK:STDOUT: %T.patt.351: %pattern_type.429 = symbolic_binding_pattern T, 0, template [template] @@ -332,7 +332,7 @@ fn F[template T:! Core.Destroy](x: T) { // CHECK:STDOUT: %x.patt.loc4_34.1: @F.%pattern_type (%pattern_type.f4e485.2) = at_binding_pattern x, %x.param_patt.loc4_34.1 [template = %x.patt.loc4_34.2 (constants.%x.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_23: type = splice_block %Destroy.ref [concrete = constants.%Destroy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Destroy.ref: type = name_ref Destroy, imports.%Core.Destroy [concrete = constants.%Destroy.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/generic/template_dependence.carbon b/toolchain/check/testdata/generic/template_dependence.carbon index 9294f2eb1c84..90b4495f3522 100644 --- a/toolchain/check/testdata/generic/template_dependence.carbon +++ b/toolchain/check/testdata/generic/template_dependence.carbon @@ -35,7 +35,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47011.1: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T.67db0b.1: type = symbolic_binding T, 0, template [template] @@ -74,7 +74,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %ptr.loc5_37: type = ptr_type %T.ref.loc5_36 [template = %ptr.loc5_29.1 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: %.loc5_37.2: Core.Form = init_form %ptr.loc5_37 [template = %.loc5_37.1 (constants.%.cb6cb9.1)] // CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_16.2: type = symbolic_binding T, 0, template [template = %T.loc5_16.1 (constants.%T.67db0b.1)] @@ -152,7 +152,7 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0, template [template] // CHECK:STDOUT: %T: type = symbolic_binding T, 0, template [template] @@ -184,12 +184,12 @@ fn F(template T:! type, U:! type) -> (T, U) { // CHECK:STDOUT: %.loc5_43.4: type = converted %.loc5_43.3, constants.%tuple.type.a5e [template = %tuple.type (constants.%tuple.type.a5e)] // CHECK:STDOUT: %.loc5_43.5: Core.Form = init_form %.loc5_43.4 [template = %.loc5_43.2 (constants.%.f18)] // CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc5_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc5_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_16.2: type = symbolic_binding T, 0, template [template = %T.loc5_16.1 (constants.%T)] // CHECK:STDOUT: %.loc5_29.1: type = splice_block %.loc5_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc5_26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc5_26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc5_26.2: type = symbolic_binding U, 1 [symbolic = %U.loc5_26.1 (constants.%U)] diff --git a/toolchain/check/testdata/generic/var_param.carbon b/toolchain/check/testdata/generic/var_param.carbon index e6cfe7ba7847..55aa8c20e57e 100644 --- a/toolchain/check/testdata/generic/var_param.carbon +++ b/toolchain/check/testdata/generic/var_param.carbon @@ -42,7 +42,7 @@ fn Test(x: i32) { // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete] // CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] // 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] @@ -82,7 +82,7 @@ fn Test(x: i32) { // CHECK:STDOUT: %x.param_patt.loc22_25.1: @TestOp.%pattern_type (%pattern_type.b3a) = var_param_pattern %x.patt.loc22_30.1 [symbolic = %x.param_patt.loc22_25.2 (constants.%x.param_patt.1e1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc22_15: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc22_12.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc22_12.1 (constants.%T.dda)] diff --git a/toolchain/check/testdata/impl/assoc_const_self.carbon b/toolchain/check/testdata/impl/assoc_const_self.carbon index 88cd3bcd8508..5c6ec75f7d81 100644 --- a/toolchain/check/testdata/impl/assoc_const_self.carbon +++ b/toolchain/check/testdata/impl/assoc_const_self.carbon @@ -111,22 +111,26 @@ fn CallF() { // CHECK:STDOUT: %assoc0.660: %I.assoc_type = assoc_entity element0, @I.WithSelf.%V [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.cba: %.Self.frozen.as_type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // 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.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %I_where.type.366: type = facet_type <@I where %impl.elem0 = %empty_struct> [concrete] -// CHECK:STDOUT: %I.impl_witness.404: = impl_witness @empty_struct_type.as.I.impl.%I.impl_witness_table [concrete] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e15: %.Self.as_type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type.14d: type = facet_type <@I where %impl.elem0.e15 = %empty_struct> [concrete] +// CHECK:STDOUT: %I.impl_witness.0ac: = 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] -// CHECK:STDOUT: %I.facet.b5a: %I.type = facet_value %empty_struct_type, (%I.impl_witness.404) [concrete] +// CHECK:STDOUT: %I.facet.693: %I.type = facet_value %empty_struct_type, (%I.impl_witness.0ac) [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // 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.56e: type = facet_type <@I where %impl.elem0 = %int_0.5c6> [concrete] -// CHECK:STDOUT: %I.impl_witness.e3f: = impl_witness @i32.as.I.impl.%I.impl_witness_table [concrete] +// CHECK:STDOUT: %I_where.type.bc5: type = facet_type <@I where %impl.elem0.e15 = %int_0.5c6> [concrete] +// CHECK:STDOUT: %I.impl_witness.edd: = 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] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] @@ -144,7 +148,7 @@ fn CallF() { // 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] // CHECK:STDOUT: %int_0.3c0: %i32 = int_value 0 [concrete] -// CHECK:STDOUT: %I.facet.967: %I.type = facet_value %i32, (%I.impl_witness.e3f) [concrete] +// CHECK:STDOUT: %I.facet.0ae: %I.type = facet_value %i32, (%I.impl_witness.edd) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -171,33 +175,41 @@ fn CallF() { // CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660] -// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc8_20.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba] // CHECK:STDOUT: %.loc8_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_26.2: %empty_struct_type = converted %.loc8_26.1, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type.366] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_26.2 +// CHECK:STDOUT: %rewrite.loc8_23.1 = requirement_rewrite %impl.elem0.loc8_20.1, %.loc8_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_20.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15] +// CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete] +// CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type.14d] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_21: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_21: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660] -// CHECK:STDOUT: %impl.elem0.loc10_21: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_21.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %.loc10_15.1: type = where_expr [concrete = constants.%I_where.type.56e] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_21, %int_0 +// CHECK:STDOUT: %rewrite.loc10_24.1 = requirement_rewrite %impl.elem0.loc10_21.1, %int_0 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_21.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15] +// CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete] +// CHECK:STDOUT: %.loc10_15.1: type = where_expr [concrete = constants.%I_where.type.bc5] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -223,7 +235,7 @@ fn CallF() { // CHECK:STDOUT: // CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc8_7.2 as %.loc8_14 { // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @empty_struct_type.as.I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.404] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.0ac] // CHECK:STDOUT: %impl_witness_assoc_constant: %empty_struct_type = impl_witness_assoc_constant constants.%empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -233,7 +245,7 @@ fn CallF() { // CHECK:STDOUT: // CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %.loc10_15.1 { // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @i32.as.I.impl [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.e3f] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.edd] // CHECK:STDOUT: %impl.elem0.loc10_15: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] // CHECK:STDOUT: %bound_method.loc10_15.1: = bound_method constants.%int_0.5c6, %impl.elem0.loc10_15 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0.loc10_15, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn] @@ -254,10 +266,10 @@ fn CallF() { // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.c84 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%.Self -// CHECK:STDOUT: %Self.as_type => constants.%.Self.as_type +// CHECK:STDOUT: %Self => constants.%.Self.frozen +// CHECK:STDOUT: %Self.as_type => constants.%.Self.frozen.as_type // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I.WithSelf(constants.%empty_struct.type.facet) { @@ -266,9 +278,9 @@ fn CallF() { // CHECK:STDOUT: %Self.as_type => constants.%empty_struct_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet.b5a) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet.693) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%I.facet.b5a +// CHECK:STDOUT: %Self => constants.%I.facet.693 // CHECK:STDOUT: %Self.as_type => constants.%empty_struct_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -278,9 +290,9 @@ fn CallF() { // CHECK:STDOUT: %Self.as_type => constants.%i32 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet.967) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet.0ae) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%I.facet.967 +// CHECK:STDOUT: %Self => constants.%I.facet.0ae // CHECK:STDOUT: %Self.as_type => constants.%i32 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -294,12 +306,16 @@ fn CallF() { // CHECK:STDOUT: %assoc0.660: %I.assoc_type = assoc_entity element0, @I.WithSelf.%V [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.cba: %.Self.frozen.as_type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // 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.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %int_0> [concrete] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e15: %.Self.as_type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e15 = %int_0> [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] @@ -328,16 +344,20 @@ fn CallF() { // CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc15_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc15_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660] -// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc15_20.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] +// CHECK:STDOUT: %rewrite.loc15_23.1 = requirement_rewrite %impl.elem0.loc15_20.1, %int_0 [concrete] +// CHECK:STDOUT: %impl.elem0.loc15_20.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15] +// CHECK:STDOUT: %rewrite.loc15_23.2 = requirement_rewrite %impl.elem0.loc15_20.2, %int_0 [concrete] // CHECK:STDOUT: %.loc15_14.1: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc15_23.2 = requirement_rewrite %impl.elem0.loc15_20.2, %int_0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -378,10 +398,10 @@ fn CallF() { // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.c84 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%.Self -// CHECK:STDOUT: %Self.as_type => constants.%.Self.as_type +// CHECK:STDOUT: %Self => constants.%.Self.frozen +// CHECK:STDOUT: %Self.as_type => constants.%.Self.frozen.as_type // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I.WithSelf(constants.%empty_struct.type.facet) { @@ -426,11 +446,15 @@ fn CallF() { // CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.336: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%C, %ImplicitAs.facet) [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.cba: %.Self.frozen.as_type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // 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.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple> [concrete] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e15: %.Self.as_type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e15 = %empty_tuple> [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] @@ -468,18 +492,22 @@ fn CallF() { // 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] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660] -// CHECK:STDOUT: %impl.elem0.loc18_19: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc18_19.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba] // CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_25.2: %empty_tuple.type = converted %.loc18_25.1, %empty_tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %rewrite.loc18_22.1 = requirement_rewrite %impl.elem0.loc18_19.1, %.loc18_25.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc18_19.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15] +// CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete] // CHECK:STDOUT: %.loc18_13.1: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc18_19, %.loc18_25.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -572,10 +600,10 @@ fn CallF() { // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.c84 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%.Self -// CHECK:STDOUT: %Self.as_type => constants.%.Self.as_type +// CHECK:STDOUT: %Self => constants.%.Self.frozen +// CHECK:STDOUT: %Self.as_type => constants.%.Self.frozen.as_type // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I.WithSelf(constants.%C.type.facet) { @@ -594,7 +622,7 @@ fn CallF() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.dc0: type = pattern_type Core.IntLiteral [concrete] // CHECK:STDOUT: %N.patt: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] @@ -613,18 +641,18 @@ fn CallF() { // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.802: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.765: type = fn_type_with_self_type %Negate.WithSelf.Op.type.802, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %int_-1: Core.IntLiteral = int_value -1 [concrete] // CHECK:STDOUT: %I.type.ce3: type = facet_type <@I, @I(%int_-1)> [concrete] -// CHECK:STDOUT: %.Self.e63: %I.type.ce3 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.978: %I.type.ce3 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Self.4a1: %I.type.ce3 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.assoc_type.6c2: type = assoc_entity_type @I, @I(%int_-1) [concrete] // CHECK:STDOUT: %assoc0.2f4: %I.assoc_type.6c2 = assoc_entity element0, @I.WithSelf.%V [concrete] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.e63 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.978 [symbolic_self] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -652,7 +680,7 @@ fn CallF() { // CHECK:STDOUT: %N.patt.loc4_14.1: %pattern_type.dc0 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_14.2 (constants.%N.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %IntLiteral.ref [concrete = Core.IntLiteral] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: } @@ -663,21 +691,23 @@ fn CallF() { // CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %impl.elem1: %.765 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method(%int_1) [concrete = constants.%int_-1] // CHECK:STDOUT: %.loc15_16.1: Core.IntLiteral = value_of_initializer %Core.IntLiteral.as.Negate.impl.Op.call [concrete = constants.%int_-1] // CHECK:STDOUT: %.loc15_16.2: Core.IntLiteral = converted %Core.IntLiteral.as.Negate.impl.Op.call, %.loc15_16.1 [concrete = constants.%int_-1] // CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%int_-1)> [concrete = constants.%I.type.ce3] -// CHECK:STDOUT: %.Self: %I.type.ce3 = symbolic_binding .Self [symbolic_self = constants.%.Self.e63] -// CHECK:STDOUT: %.Self.ref: %I.type.ce3 = name_ref .Self, %.Self [symbolic_self = constants.%.Self.e63] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc15_24: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type.ce3 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.978] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.type [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type.ce3 = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.978] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc15_24: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %V.ref: = name_ref V, [concrete = ] // CHECK:STDOUT: %.loc15_30: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %rewrite = requirement_rewrite %V.ref, [concrete] // CHECK:STDOUT: %.loc15_18: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.type -// CHECK:STDOUT: requirement_rewrite %V.ref, +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.type [concrete] +// CHECK:STDOUT: %rewrite = requirement_rewrite %V.ref, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -754,25 +784,30 @@ fn CallF() { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.660: %I.assoc_type = assoc_entity element0, @I.WithSelf.%V [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.9e9: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.3a0: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.0ff: type = generic_interface_type @ImplicitAs [concrete] // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.0ff = struct_value () [concrete] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.9e9 [symbolic_self] -// CHECK:STDOUT: %ImplicitAs.type.313: type = facet_type <@ImplicitAs, @ImplicitAs(%.Self.as_type)> [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness.a48: = lookup_impl_witness %.Self.9e9, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %I.lookup_impl_witness.a48, element0 [symbolic_self] -// CHECK:STDOUT: %I_where.type.366d4a.1: type = facet_type <@I where %empty_struct_type impls @ImplicitAs, @ImplicitAs(%.Self.as_type) and %impl.elem0 = %empty_struct> [concrete] -// CHECK:STDOUT: %pattern_type.be2: type = pattern_type %I_where.type.366d4a.1 [concrete] -// CHECK:STDOUT: %T.patt: %pattern_type.be2 = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %T: %I_where.type.366d4a.1 = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.3a0 [symbolic_self] +// CHECK:STDOUT: %ImplicitAs.type.acb: type = facet_type <@ImplicitAs, @ImplicitAs(%.Self.frozen.as_type)> [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen.3a0, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.cba: %.Self.frozen.as_type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %ImplicitAs.type.418: type = facet_type <@ImplicitAs, @ImplicitAs(%.Self.as_type)> [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e15: %.Self.as_type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type.14de72.1: type = facet_type <@I where %empty_struct_type impls @ImplicitAs, @ImplicitAs(%.Self.as_type) and %impl.elem0.e15 = %empty_struct> [concrete] +// CHECK:STDOUT: %pattern_type.692: type = pattern_type %I_where.type.14de72.1 [concrete] +// CHECK:STDOUT: %T.patt: %pattern_type.692 = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T: %I_where.type.14de72.1 = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %CallF.type: type = fn_type @CallF [concrete] // CHECK:STDOUT: %CallF: %CallF.type = struct_value () [concrete] -// CHECK:STDOUT: %I_where.type.366d4a.2: type = facet_type <@I where %empty_struct_type impls @ImplicitAs, @ImplicitAs(%empty_struct_type) and %impl.elem0 = %empty_struct> [concrete] +// CHECK:STDOUT: %I_where.type.14de72.2: type = facet_type <@I where %empty_struct_type impls @ImplicitAs, @ImplicitAs(%empty_struct_type) and %impl.elem0.e15 = %empty_struct> [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -794,35 +829,42 @@ fn CallF() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %T.patt.loc8_7.1: %pattern_type.be2 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt)] +// CHECK:STDOUT: %T.patt.loc8_7.1: %pattern_type.692 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc8_12.1: type = splice_block %.loc8_12.2 [concrete = constants.%I_where.type.366d4a.1] { -// CHECK:STDOUT: %.Self.loc8_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc8_12.1: type = splice_block %.loc8_12.2 [concrete = constants.%I_where.type.14de72.1] { +// CHECK:STDOUT: %.Self.frozen.loc8_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc8_12: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] +// CHECK:STDOUT: %.Self.frozen.loc8_12: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] // CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.0ff = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %.Self.ref.loc8_43: %I.type = name_ref .Self, %.Self.loc8_12 [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.as_type.loc8_48: type = facet_access_type %.Self.ref.loc8_43 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_48: type = converted %.Self.ref.loc8_43, %.Self.as_type.loc8_48 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%.Self.as_type)> [symbolic_self = constants.%ImplicitAs.type.313] +// CHECK:STDOUT: %.Self.ref.loc8_43: %I.type = name_ref .Self, %.Self.frozen.loc8_12 [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %.Self.as_type.loc8_48: type = facet_access_type %.Self.ref.loc8_43 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_48: type = converted %.Self.ref.loc8_43, %.Self.as_type.loc8_48 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %ImplicitAs.type.loc8_48.1: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%.Self.frozen.as_type)> [symbolic_self = constants.%ImplicitAs.type.acb] // CHECK:STDOUT: %.loc8_19.2: type = converted %.loc8_19.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.Self.ref.loc8_54: %I.type = name_ref .Self, %.Self.loc8_12 [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.as_type.loc8_54: type = facet_access_type %.Self.ref.loc8_54 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_54: type = converted %.Self.ref.loc8_54, %.Self.as_type.loc8_54 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc8_21.1 = requirement_impls %.loc8_19.2, %ImplicitAs.type.loc8_48.1 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_54: %I.type = name_ref .Self, %.Self.frozen.loc8_12 [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %.Self.as_type.loc8_54: type = facet_access_type %.Self.ref.loc8_54 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_54: type = converted %.Self.ref.loc8_54, %.Self.as_type.loc8_54 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.660] -// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.a48, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc8_54.1: %.Self.frozen.as_type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.cba] // CHECK:STDOUT: %.loc8_60.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc8_60.2: %empty_struct_type = converted %.loc8_60.1, %empty_struct [concrete = constants.%empty_struct] -// CHECK:STDOUT: %.loc8_12.2: type = where_expr [concrete = constants.%I_where.type.366d4a.1] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_impls %.loc8_19.2, %ImplicitAs.type -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_60.2 +// CHECK:STDOUT: %rewrite.loc8_57.1 = requirement_rewrite %impl.elem0.loc8_54.1, %.loc8_60.2 [concrete] +// CHECK:STDOUT: %ImplicitAs.type.loc8_48.2: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%.Self.as_type)> [symbolic_self = constants.%ImplicitAs.type.418] +// CHECK:STDOUT: %impls.loc8_21.2 = requirement_impls %.loc8_19.2, %ImplicitAs.type.loc8_48.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_54.2: %.Self.as_type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e15] +// CHECK:STDOUT: %rewrite.loc8_57.2 = requirement_rewrite %impl.elem0.loc8_54.2, %.loc8_60.2 [concrete] +// CHECK:STDOUT: %.loc8_12.2: type = where_expr [concrete = constants.%I_where.type.14de72.1] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %impls.loc8_21.2 = requirement_impls %.loc8_19.2, %ImplicitAs.type.loc8_48.2 [concrete] +// CHECK:STDOUT: %rewrite.loc8_57.2 = requirement_rewrite %impl.elem0.loc8_54.2, %.loc8_60.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc8_7.2: %I_where.type.366d4a.1 = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T)] +// CHECK:STDOUT: %T.loc8_7.2: %I_where.type.14de72.1 = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %CallF.decl: %CallF.type = fn_decl @CallF [concrete = constants.%CallF] {} {} // CHECK:STDOUT: } @@ -846,9 +888,9 @@ fn CallF() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc8_7.2: %I_where.type.366d4a.1) { -// CHECK:STDOUT: %T.patt.loc8_7.2: %pattern_type.be2 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt)] -// CHECK:STDOUT: %T.loc8_7.1: %I_where.type.366d4a.1 = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T)] +// CHECK:STDOUT: generic fn @F(%T.loc8_7.2: %I_where.type.14de72.1) { +// CHECK:STDOUT: %T.patt.loc8_7.2: %pattern_type.692 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt)] +// CHECK:STDOUT: %T.loc8_7.1: %I_where.type.14de72.1 = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -857,7 +899,7 @@ fn CallF() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %.loc19: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where constants.%empty_struct_type impls @ImplicitAs, @ImplicitAs(constants.%empty_struct_type) and constants.%impl.elem0 = constants.%empty_struct> [concrete = constants.%I_where.type.366d4a.2] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where constants.%empty_struct_type impls @ImplicitAs, @ImplicitAs(constants.%empty_struct_type) and constants.%impl.elem0.e15 = constants.%empty_struct> [concrete = constants.%I_where.type.14de72.2] // CHECK:STDOUT: return // CHECK:STDOUT: // CHECK:STDOUT: !observes: @@ -869,10 +911,10 @@ fn CallF() { // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.c84 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.9e9) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen.3a0) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%.Self.9e9 -// CHECK:STDOUT: %Self.as_type => constants.%.Self.as_type +// CHECK:STDOUT: %Self => constants.%.Self.frozen.3a0 +// CHECK:STDOUT: %Self.as_type => constants.%.Self.frozen.as_type // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { diff --git a/toolchain/check/testdata/impl/compound.carbon b/toolchain/check/testdata/impl/compound.carbon index 9c6e6f66f4ae..70097adc0f4a 100644 --- a/toolchain/check/testdata/impl/compound.carbon +++ b/toolchain/check/testdata/impl/compound.carbon @@ -125,7 +125,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Dest.patt: %pattern_type.98f = symbolic_binding_pattern Dest, 0 [symbolic] // CHECK:STDOUT: %Dest: type = symbolic_binding Dest, 0 [symbolic] @@ -155,7 +155,7 @@ fn InstanceCallFail() { // CHECK:STDOUT: %Dest.patt.loc3_26.1: %pattern_type.98f = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt.loc3_26.2 (constants.%Dest.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_29.1: type = splice_block %.loc3_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %Dest.loc3_26.2: type = symbolic_binding Dest, 0 [symbolic = %Dest.loc3_26.1 (constants.%Dest)] diff --git a/toolchain/check/testdata/impl/error_recovery.carbon b/toolchain/check/testdata/impl/error_recovery.carbon index ef1496457f4e..7fbef48057c8 100644 --- a/toolchain/check/testdata/impl/error_recovery.carbon +++ b/toolchain/check/testdata/impl/error_recovery.carbon @@ -163,7 +163,7 @@ impl C as I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -183,7 +183,7 @@ impl C as I { // CHECK:STDOUT: %T.patt.loc13_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_10.1: type = splice_block %.loc13_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc13_7.1 (constants.%T)] @@ -224,7 +224,7 @@ impl C as I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -245,7 +245,7 @@ impl C as I { // CHECK:STDOUT: %T.patt.loc13_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_10.1: type = splice_block %.loc13_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc13_7.1 (constants.%T)] diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index 727a674b20bc..153483d6aeec 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -56,7 +56,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -184,7 +184,7 @@ class X(U:! type) { // CHECK:STDOUT: %T.patt.loc4_17.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_17.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_17.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_17.1 (constants.%T.67d)] @@ -459,7 +459,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -526,7 +526,7 @@ class X(U:! type) { // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] @@ -535,7 +535,7 @@ class X(U:! type) { // CHECK:STDOUT: %U.patt.loc8_10.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc8_10.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_13.1: type = splice_block %.loc8_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc8_10.2: type = symbolic_binding U, 0 [symbolic = %U.loc8_10.1 (constants.%U)] diff --git a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon index 5a07a29f33ed..99127be3c1e6 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon @@ -30,7 +30,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -63,7 +63,7 @@ class C { // CHECK:STDOUT: %T.patt.loc15_29.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_29.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_32.1: type = splice_block %.loc15_32.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_32.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_29.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_29.1 (constants.%T)] @@ -146,7 +146,7 @@ class C { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc24_24.2 [symbolic = %T.loc24_24.1 (constants.%T)] // CHECK:STDOUT: %GenericInterface.type.loc24_54.2: type = facet_type <@GenericInterface, @GenericInterface(constants.%T)> [symbolic = %GenericInterface.type.loc24_54.1 (constants.%GenericInterface.type.4e1)] // CHECK:STDOUT: %.loc24_27.1: type = splice_block %.loc24_27.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc24_27.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc24_24.2: type = symbolic_binding T, 0 [symbolic = %T.loc24_24.1 (constants.%T)] diff --git a/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon b/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon index a04aa434644c..e56bbdf82b0f 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon @@ -134,6 +134,8 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: %Float.generic: %Float.type = struct_value () [concrete] // CHECK:STDOUT: %f64: type = class_type @Float, @Float(%int_64) [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: } @@ -155,14 +157,21 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: impl_decl @f64.as..impl [concrete] {} { // CHECK:STDOUT: %f64: type = type_literal constants.%f64 [concrete = constants.%f64] // CHECK:STDOUT: %.loc8_13: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc8_13 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_24.1: %type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_36: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_24: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc8_24.1: type = facet_access_type %.Self.ref.loc8_24.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_24.1: type = converted %.Self.ref.loc8_24.1, %.Self.as_type.loc8_24.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc8_30.1 = requirement_impls %.loc8_24.1, %.loc8_36 [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc8_24.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc8_24.2: type = facet_access_type %.Self.ref.loc8_24.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc8_24.2: type = converted %.Self.ref.loc8_24.1, %.Self.as_type.loc8_24.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc8_30.2 = requirement_impls %.loc8_24.2, %.loc8_36 [concrete] // CHECK:STDOUT: %.loc8_18: type = where_expr [concrete = constants.%type] { -// CHECK:STDOUT: requirement_base_facet_type %.loc8_13 -// CHECK:STDOUT: requirement_impls %.loc8_24, %.loc8_36 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc8_13 [concrete] +// CHECK:STDOUT: %impls.loc8_30.2 = requirement_impls %.loc8_24.2, %.loc8_36 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -180,6 +189,8 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: bool} [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %type_where: type = facet_type [concrete] @@ -205,14 +216,21 @@ impl {.a: bool} as type where .Self impls I {} // CHECK:STDOUT: %.loc10_11: type = type_literal bool [concrete = bool] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: bool} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %.loc10_20: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc10_20 [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_31.1: %type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_31: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc10_31.1: type = facet_access_type %.Self.ref.loc10_31.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_31.1: type = converted %.Self.ref.loc10_31.1, %.Self.as_type.loc10_31.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc10_37.1 = requirement_impls %.loc10_31.1, %I.ref [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc10_31.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc10_31.2: type = facet_access_type %.Self.ref.loc10_31.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc10_31.2: type = converted %.Self.ref.loc10_31.1, %.Self.as_type.loc10_31.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc10_37.2 = requirement_impls %.loc10_31.2, %I.ref [concrete] // CHECK:STDOUT: %.loc10_25: type = where_expr [concrete = constants.%type_where] { -// CHECK:STDOUT: requirement_base_facet_type %.loc10_20 -// CHECK:STDOUT: requirement_impls %.loc10_31, %I.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc10_20 [concrete] +// CHECK:STDOUT: %impls.loc10_37.2 = requirement_impls %.loc10_31.2, %I.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon index dcc363319fd9..ef7f311d8a4a 100644 --- a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon +++ b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon @@ -43,7 +43,7 @@ impl i32 as I { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -141,12 +141,12 @@ impl i32 as I { // CHECK:STDOUT: %X.patt.loc17_20.1: @C.%pattern_type (%pattern_type.51d1c4.1) = symbolic_binding_pattern X, 1 [symbolic = %X.patt.loc17_20.2 (constants.%X.patt.9f0)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17_13.1: type = splice_block %.loc17_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc17_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc17_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc17_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc17_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc17_10.1 (constants.%T)] // CHECK:STDOUT: %.loc17_23: type = splice_block %T.ref [symbolic = %T.loc17_10.1 (constants.%T)] { -// CHECK:STDOUT: %.Self.loc17_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc17_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc17_10.2 [symbolic = %T.loc17_10.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %X.loc17_20.2: @C.%T.loc17_10.1 (%T) = symbolic_binding X, 1 [symbolic = %X.loc17_20.1 (constants.%X)] diff --git a/toolchain/check/testdata/impl/forward_decls.carbon b/toolchain/check/testdata/impl/forward_decls.carbon index a3582c69407c..9300da0e5076 100644 --- a/toolchain/check/testdata/impl/forward_decls.carbon +++ b/toolchain/check/testdata/impl/forward_decls.carbon @@ -506,12 +506,15 @@ impl C as Y {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [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: } @@ -534,34 +537,42 @@ impl C as Y {} // CHECK:STDOUT: %.loc6_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref.loc6: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc6: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc6: %I.type = name_ref .Self, %.Self.loc6 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc6: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc6 = requirement_base_facet_type %I.ref.loc6 [concrete] +// CHECK:STDOUT: %.Self.ref.loc6: %I.type = name_ref .Self, %.Self.frozen.loc6 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc6: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc6: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc6_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc6_23.1 = requirement_rewrite %impl.elem0.loc6_20.1, %.loc6_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete] // CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc6 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6, %.loc6_26.2 +// CHECK:STDOUT: %base_facet_type.loc6 = requirement_base_facet_type %I.ref.loc6 [concrete] +// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // 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] // CHECK:STDOUT: %I.ref.loc8: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc8: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc8: %I.type = name_ref .Self, %.Self.loc8 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc8: type = facet_access_type %.Self.ref.loc8 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc8: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %I.ref.loc8 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8: %I.type = name_ref .Self, %.Self.frozen.loc8 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc8: type = facet_access_type %.Self.ref.loc8 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc8: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc8_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc8_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_26.2: type = converted %.loc8_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc8_23.1 = requirement_rewrite %impl.elem0.loc8_20.1, %.loc8_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete] // CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc8 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %.loc8_26.2 +// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %I.ref.loc8 [concrete] +// CHECK:STDOUT: %rewrite.loc8_23.2 = requirement_rewrite %impl.elem0.loc8_20.2, %.loc8_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -599,7 +610,7 @@ impl C as Y {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -617,13 +628,16 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [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] @@ -650,17 +664,21 @@ impl C as Y {} // CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // 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: %.Self.loc7: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc7: %I.type = name_ref .Self, %.Self.loc7 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc7: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc7 = requirement_base_facet_type %I.ref.loc7 [concrete] +// CHECK:STDOUT: %.Self.ref.loc7: %I.type = name_ref .Self, %.Self.frozen.loc7 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc7: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc7: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc7_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_25.2: type = converted %.loc7_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc7_22.1 = requirement_rewrite %impl.elem0.loc7_19.1, %.loc7_25.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc7_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete] // CHECK:STDOUT: %.loc7_13: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc7 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc7, %.loc7_25.2 +// CHECK:STDOUT: %base_facet_type.loc7 = requirement_base_facet_type %I.ref.loc7 [concrete] +// CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -680,17 +698,21 @@ impl C as Y {} // CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc11: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc11: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc11: %I.type = name_ref .Self, %.Self.loc11 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc11: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.ref.loc11 [concrete] +// CHECK:STDOUT: %.Self.ref.loc11: %I.type = name_ref .Self, %.Self.frozen.loc11 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc11: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc11_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc11_22.1 = requirement_rewrite %impl.elem0.loc11_19.1, %.loc11_25.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete] // CHECK:STDOUT: %.loc11_13: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc11 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %.loc11_25.2 +// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.ref.loc11 [concrete] +// CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -744,7 +766,7 @@ impl C as Y {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -762,13 +784,16 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [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] @@ -795,17 +820,21 @@ impl C as Y {} // CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // 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: %.Self.loc7: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc7: %I.type = name_ref .Self, %.Self.loc7 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc7: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc7 = requirement_base_facet_type %I.ref.loc7 [concrete] +// CHECK:STDOUT: %.Self.ref.loc7: %I.type = name_ref .Self, %.Self.frozen.loc7 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc7: type = facet_access_type %.Self.ref.loc7 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc7_19: type = converted %.Self.ref.loc7, %.Self.as_type.loc7 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc7: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc7: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc7_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc7_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_25.2: type = converted %.loc7_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc7_22.1 = requirement_rewrite %impl.elem0.loc7_19.1, %.loc7_25.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc7_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete] // CHECK:STDOUT: %.loc7_13: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc7 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc7, %.loc7_25.2 +// CHECK:STDOUT: %base_facet_type.loc7 = requirement_base_facet_type %I.ref.loc7 [concrete] +// CHECK:STDOUT: %rewrite.loc7_22.2 = requirement_rewrite %impl.elem0.loc7_19.2, %.loc7_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] @@ -827,17 +856,21 @@ impl C as Y {} // CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc11: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc11: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc11: %I.type = name_ref .Self, %.Self.loc11 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc11: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.ref.loc11 [concrete] +// CHECK:STDOUT: %.Self.ref.loc11: %I.type = name_ref .Self, %.Self.frozen.loc11 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_19: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc11: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc11_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc11_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc11_22.1 = requirement_rewrite %impl.elem0.loc11_19.1, %.loc11_25.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete] // CHECK:STDOUT: %.loc11_13: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc11 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %.loc11_25.2 +// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.ref.loc11 [concrete] +// CHECK:STDOUT: %rewrite.loc11_22.2 = requirement_rewrite %impl.elem0.loc11_19.2, %.loc11_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -891,7 +924,7 @@ impl C as Y {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1016,8 +1049,8 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1042,15 +1075,17 @@ impl C as Y {} // CHECK:STDOUT: impl_decl @D.as..impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc13: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc13: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc13: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc13: %I.type = name_ref .Self, %.Self.loc13 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13: type = facet_access_type %.Self.ref.loc13 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_19: type = converted %.Self.ref.loc13, %.Self.as_type.loc13 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc13: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc13 = requirement_base_facet_type %I.ref.loc13 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13: %I.type = name_ref .Self, %.Self.frozen.loc13 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13: type = facet_access_type %.Self.ref.loc13 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_19: type = converted %.Self.ref.loc13, %.Self.as_type.loc13 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc13: = name_ref T, [concrete = ] // CHECK:STDOUT: %C.ref.loc13: type = name_ref C, file.%C.decl.loc4 [concrete = constants.%C] +// CHECK:STDOUT: %rewrite.loc13 = requirement_rewrite %T.ref.loc13, [concrete] // CHECK:STDOUT: %.loc13_13: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc13 -// CHECK:STDOUT: requirement_rewrite %T.ref.loc13, +// CHECK:STDOUT: %base_facet_type.loc13 = requirement_base_facet_type %I.ref.loc13 [concrete] +// CHECK:STDOUT: %rewrite.loc13 = requirement_rewrite %T.ref.loc13, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl.loc15: type = interface_decl @I [concrete = constants.%I.type] {} {} @@ -1058,15 +1093,17 @@ impl C as Y {} // CHECK:STDOUT: impl_decl @D.as..impl [concrete] {} { // CHECK:STDOUT: %D.ref.loc21: type = name_ref D, file.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %I.ref.loc21: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc21: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc21: %I.type = name_ref .Self, %.Self.loc21 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc21: type = facet_access_type %.Self.ref.loc21 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc21_19: type = converted %.Self.ref.loc21, %.Self.as_type.loc21 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc21: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc21 = requirement_base_facet_type %I.ref.loc21 [concrete] +// CHECK:STDOUT: %.Self.ref.loc21: %I.type = name_ref .Self, %.Self.frozen.loc21 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc21: type = facet_access_type %.Self.ref.loc21 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc21_19: type = converted %.Self.ref.loc21, %.Self.as_type.loc21 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc21: = name_ref T, [concrete = ] // CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl.loc4 [concrete = constants.%C] +// CHECK:STDOUT: %rewrite.loc21 = requirement_rewrite %T.ref.loc21, [concrete] // CHECK:STDOUT: %.loc21_13: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc21 -// CHECK:STDOUT: requirement_rewrite %T.ref.loc21, +// CHECK:STDOUT: %base_facet_type.loc21 = requirement_base_facet_type %I.ref.loc21 [concrete] +// CHECK:STDOUT: %rewrite.loc21 = requirement_rewrite %T.ref.loc21, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1111,7 +1148,7 @@ impl C as Y {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1119,7 +1156,7 @@ impl C as Y {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U: type = symbolic_binding U, 0 [symbolic] @@ -1134,14 +1171,17 @@ impl C as Y {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %I.type.c9e: type = facet_type <@I, @I(%C)> [concrete] -// CHECK:STDOUT: %.Self.30a: %I.type.c9e = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.a85: %I.type.c9e = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Self.29c: %I.type.c9e = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %I.assoc_type.fc8: type = assoc_entity_type @I, @I(%C) [concrete] // CHECK:STDOUT: %assoc0.540: %I.assoc_type.fc8 = assoc_entity element0, @I.WithSelf.%T [concrete] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.30a [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self.30a, @I, @I(%C) [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I, @I(%C) where %impl.elem0 = %C> [concrete] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.a85 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.2b8: = lookup_impl_witness %.Self.frozen.a85, @I, @I(%C) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.c46: type = impl_witness_access %I.lookup_impl_witness.2b8, element0 [symbolic_self] +// CHECK:STDOUT: %.Self: %I.type.c9e = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.e58: = lookup_impl_witness %.Self, @I, @I(%C) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.0dc: type = impl_witness_access %I.lookup_impl_witness.e58, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I, @I(%C) where %impl.elem0.0dc = %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: } @@ -1165,7 +1205,7 @@ impl C as Y {} // CHECK:STDOUT: %U.patt.loc3_14.1: %pattern_type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc3_14.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_17.1: type = splice_block %.loc3_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc3_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc3_14.2: type = symbolic_binding U, 0 [symbolic = %U.loc3_14.1 (constants.%U)] @@ -1177,17 +1217,21 @@ impl C as Y {} // CHECK:STDOUT: %I.ref.loc8: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %C.ref.loc8_13: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C] // CHECK:STDOUT: %I.type.loc8: type = facet_type <@I, @I(constants.%C)> [concrete = constants.%I.type.c9e] -// CHECK:STDOUT: %.Self.loc8: %I.type.c9e = symbolic_binding .Self [symbolic_self = constants.%.Self.30a] -// CHECK:STDOUT: %.Self.ref.loc8: %I.type.c9e = name_ref .Self, %.Self.loc8 [symbolic_self = constants.%.Self.30a] -// CHECK:STDOUT: %.Self.as_type.loc8: type = facet_access_type %.Self.ref.loc8 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_22.1: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_22.2: %I.assoc_type.fc8 = specific_constant @T.%assoc0, @I.WithSelf(constants.%C, constants.%.Self.30a) [concrete = constants.%assoc0.540] +// CHECK:STDOUT: %.Self.frozen.loc8: %I.type.c9e = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.a85] +// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %I.type.loc8 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8: %I.type.c9e = name_ref .Self, %.Self.frozen.loc8 [symbolic_self = constants.%.Self.frozen.a85] +// CHECK:STDOUT: %.Self.as_type.loc8: type = facet_access_type %.Self.ref.loc8 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_22.1: type = converted %.Self.ref.loc8, %.Self.as_type.loc8 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_22.2: %I.assoc_type.fc8 = specific_constant @T.%assoc0, @I.WithSelf(constants.%C, constants.%.Self.frozen.a85) [concrete = constants.%assoc0.540] // CHECK:STDOUT: %T.ref.loc8: %I.assoc_type.fc8 = name_ref T, %.loc8_22.2 [concrete = constants.%assoc0.540] -// CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc8_22.1: type = impl_witness_access constants.%I.lookup_impl_witness.2b8, element0 [symbolic_self = constants.%impl.elem0.c46] // CHECK:STDOUT: %C.ref.loc8_27: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C] +// CHECK:STDOUT: %rewrite.loc8_25.1 = requirement_rewrite %impl.elem0.loc8_22.1, %C.ref.loc8_27 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_22.2: type = impl_witness_access constants.%I.lookup_impl_witness.e58, element0 [symbolic_self = constants.%impl.elem0.0dc] +// CHECK:STDOUT: %rewrite.loc8_25.2 = requirement_rewrite %impl.elem0.loc8_22.2, %C.ref.loc8_27 [concrete] // CHECK:STDOUT: %.loc8_16: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.type.loc8 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %C.ref.loc8_27 +// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %I.type.loc8 [concrete] +// CHECK:STDOUT: %rewrite.loc8_25.2 = requirement_rewrite %impl.elem0.loc8_22.2, %C.ref.loc8_27 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl.loc10: type = class_decl @C [concrete = constants.%C] {} {} @@ -1196,17 +1240,21 @@ impl C as Y {} // CHECK:STDOUT: %I.ref.loc11: %I.type.335 = name_ref I, file.%I.decl [concrete = constants.%I.generic] // CHECK:STDOUT: %C.ref.loc11_13: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C] // CHECK:STDOUT: %I.type.loc11: type = facet_type <@I, @I(constants.%C)> [concrete = constants.%I.type.c9e] -// CHECK:STDOUT: %.Self.loc11: %I.type.c9e = symbolic_binding .Self [symbolic_self = constants.%.Self.30a] -// CHECK:STDOUT: %.Self.ref.loc11: %I.type.c9e = name_ref .Self, %.Self.loc11 [symbolic_self = constants.%.Self.30a] -// CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc11_22.1: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc11_22.2: %I.assoc_type.fc8 = specific_constant @T.%assoc0, @I.WithSelf(constants.%C, constants.%.Self.30a) [concrete = constants.%assoc0.540] +// CHECK:STDOUT: %.Self.frozen.loc11: %I.type.c9e = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.a85] +// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.type.loc11 [concrete] +// CHECK:STDOUT: %.Self.ref.loc11: %I.type.c9e = name_ref .Self, %.Self.frozen.loc11 [symbolic_self = constants.%.Self.frozen.a85] +// CHECK:STDOUT: %.Self.as_type.loc11: type = facet_access_type %.Self.ref.loc11 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_22.1: type = converted %.Self.ref.loc11, %.Self.as_type.loc11 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_22.2: %I.assoc_type.fc8 = specific_constant @T.%assoc0, @I.WithSelf(constants.%C, constants.%.Self.frozen.a85) [concrete = constants.%assoc0.540] // CHECK:STDOUT: %T.ref.loc11: %I.assoc_type.fc8 = name_ref T, %.loc11_22.2 [concrete = constants.%assoc0.540] -// CHECK:STDOUT: %impl.elem0.loc11: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc11_22.1: type = impl_witness_access constants.%I.lookup_impl_witness.2b8, element0 [symbolic_self = constants.%impl.elem0.c46] // CHECK:STDOUT: %C.ref.loc11_27: type = name_ref C, file.%C.decl.loc6 [concrete = constants.%C] +// CHECK:STDOUT: %rewrite.loc11_25.1 = requirement_rewrite %impl.elem0.loc11_22.1, %C.ref.loc11_27 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_22.2: type = impl_witness_access constants.%I.lookup_impl_witness.e58, element0 [symbolic_self = constants.%impl.elem0.0dc] +// CHECK:STDOUT: %rewrite.loc11_25.2 = requirement_rewrite %impl.elem0.loc11_22.2, %C.ref.loc11_27 [concrete] // CHECK:STDOUT: %.loc11_16: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.type.loc11 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11, %C.ref.loc11_27 +// CHECK:STDOUT: %base_facet_type.loc11 = requirement_base_facet_type %I.type.loc11 [concrete] +// CHECK:STDOUT: %rewrite.loc11_25.2 = requirement_rewrite %impl.elem0.loc11_22.2, %C.ref.loc11_27 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1288,7 +1336,7 @@ impl C as Y {} // CHECK:STDOUT: %assoc0 => constants.%assoc0.540 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%C, constants.%.Self.30a) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%C, constants.%.Self.frozen.a85) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %U => constants.%C // CHECK:STDOUT: %I.assoc_type => constants.%I.assoc_type.fc8 @@ -1311,7 +1359,7 @@ impl C as Y {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [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: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] @@ -1354,7 +1402,7 @@ impl C as Y {} // CHECK:STDOUT: %T.patt.loc12: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %I.ref.loc6 [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref.loc6: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_10.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc6_10.1 (constants.%T)] @@ -1382,7 +1430,7 @@ impl C as Y {} // CHECK:STDOUT: %T.patt.loc12: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12: type = splice_block %I.ref.loc12 [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self.loc12: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc12: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref.loc12: type = name_ref I, file.%I.decl.loc3 [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12: %I.type = symbolic_binding T, 0 [symbolic = %T.loc6_10.1 (constants.%T)] @@ -1575,13 +1623,16 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [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: } @@ -1605,33 +1656,41 @@ impl C as Y {} // CHECK:STDOUT: impl_decl @C.as.I.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc9: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %I.ref.loc9: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc9: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc9: %I.type = name_ref .Self, %.Self.loc9 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc9: type = facet_access_type %.Self.ref.loc9 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_19: type = converted %.Self.ref.loc9, %.Self.as_type.loc9 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc9: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc9 = requirement_base_facet_type %I.ref.loc9 [concrete] +// CHECK:STDOUT: %.Self.ref.loc9: %I.type = name_ref .Self, %.Self.frozen.loc9 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc9: type = facet_access_type %.Self.ref.loc9 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_19: type = converted %.Self.ref.loc9, %.Self.as_type.loc9 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc9: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc9_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc9_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_25.2: type = converted %.loc9_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc9_22.1 = requirement_rewrite %impl.elem0.loc9_19.1, %.loc9_25.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc9_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc9_22.2 = requirement_rewrite %impl.elem0.loc9_19.2, %.loc9_25.2 [concrete] // CHECK:STDOUT: %.loc9_13: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc9 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc9, %.loc9_25.2 +// CHECK:STDOUT: %base_facet_type.loc9 = requirement_base_facet_type %I.ref.loc9 [concrete] +// CHECK:STDOUT: %rewrite.loc9_22.2 = requirement_rewrite %impl.elem0.loc9_19.2, %.loc9_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // 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] -// CHECK:STDOUT: %.Self.loc18: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc18: %I.type = name_ref .Self, %.Self.loc18 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc18: type = facet_access_type %.Self.ref.loc18 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref.loc18, %.Self.as_type.loc18 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc18: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc18 = requirement_base_facet_type %I.ref.loc18 [concrete] +// CHECK:STDOUT: %.Self.ref.loc18: %I.type = name_ref .Self, %.Self.frozen.loc18 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc18: type = facet_access_type %.Self.ref.loc18 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref.loc18, %.Self.as_type.loc18 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc18: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc18: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc18_19.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc18_25.2: type = converted %.loc18_25.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc18_22.1 = requirement_rewrite %impl.elem0.loc18_19.1, %.loc18_25.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc18_19.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete] // CHECK:STDOUT: %.loc18_13: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc18 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc18, %.loc18_25.2 +// CHECK:STDOUT: %base_facet_type.loc18 = requirement_base_facet_type %I.ref.loc18 [concrete] +// CHECK:STDOUT: %rewrite.loc18_22.2 = requirement_rewrite %impl.elem0.loc18_19.2, %.loc18_25.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1681,7 +1740,7 @@ impl C as Y {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1694,7 +1753,7 @@ impl C as Y {} // CHECK:STDOUT: constants { // CHECK:STDOUT: %X.type: type = facet_type <@X> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.ffc: type = pattern_type %X.type [concrete] // CHECK:STDOUT: %_.patt: %pattern_type.ffc = symbolic_binding_pattern _, 0 [symbolic] // CHECK:STDOUT: %_: %X.type = symbolic_binding _, 0 [symbolic] @@ -1754,7 +1813,7 @@ impl C as Y {} // CHECK:STDOUT: %_.patt.loc34: %pattern_type.ffc = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc6 (constants.%_.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %X.ref.loc6 [concrete = constants.%X.type] { -// CHECK:STDOUT: %.Self.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %X.ref.loc6: type = name_ref X, file.%X.decl.loc3 [concrete = constants.%X.type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc6_7.2: %X.type = symbolic_binding _, 0 [symbolic = %_.loc6_7.1 (constants.%_)] @@ -1765,7 +1824,7 @@ impl C as Y {} // CHECK:STDOUT: %u.patt.loc35: @G.%pattern_type (%pattern_type.fa2) = at_binding_pattern u, %u.param_patt.loc35 [symbolic = %u.patt.loc7 (constants.%u.patt.dae)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10: type = splice_block %X.ref.loc7 [concrete = constants.%X.type] { -// CHECK:STDOUT: %.Self.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %X.ref.loc7: type = name_ref X, file.%X.decl.loc3 [concrete = constants.%X.type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_7.2: %X.type = symbolic_binding U, 0 [symbolic = %U.loc7_7.1 (constants.%U)] @@ -1798,7 +1857,7 @@ impl C as Y {} // CHECK:STDOUT: %_.patt.loc34: %pattern_type.ffc = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc6 (constants.%_.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc34: type = splice_block %X.ref.loc34 [concrete = constants.%X.type] { -// CHECK:STDOUT: %.Self.loc34: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc34: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %X.ref.loc34: type = name_ref X, file.%X.decl.loc3 [concrete = constants.%X.type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc34: %X.type = symbolic_binding _, 0 [symbolic = %_.loc6_7.1 (constants.%_)] @@ -1809,7 +1868,7 @@ impl C as Y {} // CHECK:STDOUT: %u.patt.loc35: @G.%pattern_type (%pattern_type.fa2) = at_binding_pattern u, %u.param_patt.loc35 [symbolic = %u.patt.loc7 (constants.%u.patt.dae)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc35_10: type = splice_block %X.ref.loc35 [concrete = constants.%X.type] { -// CHECK:STDOUT: %.Self.loc35: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc35: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %X.ref.loc35: type = name_ref X, file.%X.decl.loc3 [concrete = constants.%X.type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc35: %X.type = symbolic_binding U, 0 [symbolic = %U.loc7_7.1 (constants.%U)] diff --git a/toolchain/check/testdata/impl/generic_redeclaration.carbon b/toolchain/check/testdata/impl/generic_redeclaration.carbon index 334f6c261a58..0afc68ecd973 100644 --- a/toolchain/check/testdata/impl/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/generic_redeclaration.carbon @@ -132,7 +132,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %L.type: type = facet_type <@L> [concrete] // CHECK:STDOUT: %Self.480: %L.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] // 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] @@ -189,7 +189,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc12_21: type = converted %T.ref.loc12, %T.as_type.loc12_21.1 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.b38)] // CHECK:STDOUT: %Interface.ref.loc12: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %.loc12_18: type = splice_block %I.ref.loc12 [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self.loc12: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc12: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref.loc12: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.1: %I.type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.dda)] @@ -202,7 +202,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc13_21: type = converted %T.ref.loc13, %T.as_type.loc13_21.1 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.d90)] // CHECK:STDOUT: %Interface.ref.loc13: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %.loc13_18: type = splice_block %J.ref.loc13 [concrete = constants.%J.type] { -// CHECK:STDOUT: %.Self.loc13: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc13: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %J.ref.loc13: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_15.1: %J.type = symbolic_binding T, 0 [symbolic = %T.loc13_15.2 (constants.%T.e40)] @@ -215,7 +215,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc14_21: type = converted %T.ref.loc14, %T.as_type.loc14_21.1 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.1ea)] // CHECK:STDOUT: %Interface.ref.loc14: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %.loc14_18: type = splice_block %K.ref.loc14 [concrete = constants.%K.type] { -// CHECK:STDOUT: %.Self.loc14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %K.ref.loc14: type = name_ref K, file.%K.decl [concrete = constants.%K.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_15.1: %K.type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T.062)] @@ -228,7 +228,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc15_21: type = converted %T.ref.loc15, %T.as_type.loc15_21.1 [symbolic = %T.as_type.loc15_21.2 (constants.%T.as_type.56f)] // CHECK:STDOUT: %Interface.ref.loc15: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %.loc15_18: type = splice_block %L.ref.loc15 [concrete = constants.%L.type] { -// CHECK:STDOUT: %.Self.loc15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %L.ref.loc15: type = name_ref L, file.%L.decl [concrete = constants.%L.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.1: %L.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T.709)] @@ -241,7 +241,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc19_21: type = converted %T.ref.loc19, %T.as_type.loc19 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.b38)] // CHECK:STDOUT: %Interface.ref.loc19: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %.loc19_18: type = splice_block %I.ref.loc19 [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self.loc19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref.loc19: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19: %I.type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.dda)] @@ -254,7 +254,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc27_21: type = converted %T.ref.loc27, %T.as_type.loc27 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.d90)] // CHECK:STDOUT: %Interface.ref.loc27: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %.loc27_18: type = splice_block %J.ref.loc27 [concrete = constants.%J.type] { -// CHECK:STDOUT: %.Self.loc27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %J.ref.loc27: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc27: %J.type = symbolic_binding T, 0 [symbolic = %T.loc13_15.2 (constants.%T.e40)] @@ -267,7 +267,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc35_21: type = converted %T.ref.loc35, %T.as_type.loc35 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.1ea)] // CHECK:STDOUT: %Interface.ref.loc35: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %.loc35_18: type = splice_block %K.ref.loc35 [concrete = constants.%K.type] { -// CHECK:STDOUT: %.Self.loc35: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc35: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %K.ref.loc35: type = name_ref K, file.%K.decl [concrete = constants.%K.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc35: %K.type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T.062)] @@ -280,7 +280,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc43_21: type = converted %T.ref.loc43, %T.as_type.loc43 [symbolic = %T.as_type.loc15_21.2 (constants.%T.as_type.56f)] // CHECK:STDOUT: %Interface.ref.loc43: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type] // CHECK:STDOUT: %.loc43_18: type = splice_block %L.ref.loc43 [concrete = constants.%L.type] { -// CHECK:STDOUT: %.Self.loc43: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc43: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %L.ref.loc43: type = name_ref L, file.%L.decl [concrete = constants.%L.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc43: %L.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T.709)] @@ -496,7 +496,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete] // CHECK:STDOUT: %Self.653: %J.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] @@ -529,7 +529,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc7_21: type = converted %T.ref, %T.as_type.loc7_21.1 [symbolic = %T.as_type.loc7_21.2 (constants.%T.as_type)] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %.loc7_18: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: %I.type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T)] @@ -542,7 +542,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %.loc15_21: type = converted %T.ref, %T.as_type.loc15_21.1 [symbolic = %T.as_type.loc15_21.2 (constants.%T.as_type)] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %.loc15_18: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.1: %I.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T)] @@ -730,7 +730,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -773,7 +773,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_15.2 [symbolic = %T.loc4_15.1 (constants.%T)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.loc4_18.1: type = splice_block %.loc4_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] @@ -784,7 +784,7 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_15.2 [symbolic = %T.loc15_15.1 (constants.%T)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.loc15_18.1: type = splice_block %.loc15_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_15.1 (constants.%T)] diff --git a/toolchain/check/testdata/impl/impl_assoc_const.carbon b/toolchain/check/testdata/impl/impl_assoc_const.carbon index 1de05a124d3b..0a5dc540fda6 100644 --- a/toolchain/check/testdata/impl/impl_assoc_const.carbon +++ b/toolchain/check/testdata/impl/impl_assoc_const.carbon @@ -120,7 +120,7 @@ library "[[@TEST_NAME]]"; interface L2 { let W2:! type; let X2:! type; } -// CHECK:STDERR: fail_two_different_first_associated.carbon:[[@LINE+4]]:12: error: associated constant `.(L2.W2)` given two different values `.(L2.X2)` and `()` [AssociatedConstantWithDifferentValues] +// CHECK:STDERR: fail_two_different_first_associated.carbon:[[@LINE+4]]:12: error: associated constant `.(L2.W2)` given two different values `()` and `.(L2.X2)` [AssociatedConstantWithDifferentValues] // CHECK:STDERR: impl () as L2 where .W2 = .X2 and .W2 = () {} // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // CHECK:STDERR: @@ -408,10 +408,10 @@ fn G() { // CHECK:STDOUT: %assoc0: %L.assoc_type = assoc_entity element0, @L.WithSelf.%W [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %.Self: %L.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %L.lookup_impl_witness: = lookup_impl_witness %.Self, @L [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %L.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %L.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %L.lookup_impl_witness.b2f: = lookup_impl_witness %.Self.frozen, @L [symbolic_self] +// CHECK:STDOUT: %impl.elem0.faf: type = impl_witness_access %L.lookup_impl_witness.b2f, element0 [symbolic_self] // CHECK:STDOUT: %tuple.type.2d5: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [concrete] // CHECK:STDOUT: %tuple.7e4: %tuple.type.2d5 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -422,6 +422,9 @@ fn G() { // CHECK:STDOUT: %tuple.8ed: %tuple.type.d7e = tuple_value (%empty_struct, %empty_struct, %empty_tuple) [concrete] // CHECK:STDOUT: %tuple.type.bd8: type = tuple_type (%empty_struct_type, %empty_tuple.type, %empty_struct_type) [concrete] // CHECK:STDOUT: %tuple.d90: %tuple.type.bd8 = tuple_value (%empty_struct, %empty_tuple, %empty_struct) [concrete] +// CHECK:STDOUT: %.Self: %L.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %L.lookup_impl_witness.2ad: = lookup_impl_witness %.Self, @L [symbolic_self] +// CHECK:STDOUT: %impl.elem0.c42: type = impl_witness_access %L.lookup_impl_witness.2ad, element0 [symbolic_self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -429,12 +432,13 @@ fn G() { // CHECK:STDOUT: %.loc13_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_7.2: type = converted %.loc13_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %L.ref: type = name_ref L, file.%L.decl [concrete = constants.%L.type] -// CHECK:STDOUT: %.Self: %L.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc13_20: %L.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_20: type = facet_access_type %.Self.ref.loc13_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_20: type = converted %.Self.ref.loc13_20, %.Self.as_type.loc13_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %L.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %L.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_20: %L.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_20: type = facet_access_type %.Self.ref.loc13_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_20: type = converted %.Self.ref.loc13_20, %.Self.as_type.loc13_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %W.ref.loc13_20: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc13_20: type = impl_witness_access constants.%L.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc13_20.1: type = impl_witness_access constants.%L.lookup_impl_witness.b2f, element0 [symbolic_self = constants.%impl.elem0.faf] // CHECK:STDOUT: %.loc13_27: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_31: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_35: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -443,12 +447,13 @@ fn G() { // CHECK:STDOUT: %.loc13_36.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_36.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_36.5: type = converted %.loc13_36.1, constants.%tuple.type.2d5 [concrete = constants.%tuple.type.2d5] -// CHECK:STDOUT: %.Self.ref.loc13_42: %L.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_42: type = facet_access_type %.Self.ref.loc13_42 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_42: type = converted %.Self.ref.loc13_42, %.Self.as_type.loc13_42 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc13_23.1 = requirement_rewrite %impl.elem0.loc13_20.1, %.loc13_36.5 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_42: %L.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_42: type = facet_access_type %.Self.ref.loc13_42 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_42: type = converted %.Self.ref.loc13_42, %.Self.as_type.loc13_42 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %W.ref.loc13_42: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc13_42: type = impl_witness_access constants.%L.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst.loc13_42: type = impl_witness_access_substituted %impl.elem0.loc13_42, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] +// CHECK:STDOUT: %impl.elem0.loc13_42.1: type = impl_witness_access constants.%L.lookup_impl_witness.b2f, element0 [symbolic_self = constants.%impl.elem0.faf] +// CHECK:STDOUT: %impl.elem0.subst.loc13_42.1: type = impl_witness_access_substituted %impl.elem0.loc13_42.1, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] // CHECK:STDOUT: %.loc13_49: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_53: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_57: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -457,12 +462,13 @@ fn G() { // CHECK:STDOUT: %.loc13_58.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_58.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_58.5: type = converted %.loc13_58.1, constants.%tuple.type.e5a [concrete = constants.%tuple.type.e5a] -// CHECK:STDOUT: %.Self.ref.loc13_64: %L.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_64: type = facet_access_type %.Self.ref.loc13_64 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_64: type = converted %.Self.ref.loc13_64, %.Self.as_type.loc13_64 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc13_45.1 = requirement_rewrite %impl.elem0.subst.loc13_42.1, %.loc13_58.5 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_64: %L.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_64: type = facet_access_type %.Self.ref.loc13_64 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_64: type = converted %.Self.ref.loc13_64, %.Self.as_type.loc13_64 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %W.ref.loc13_64: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc13_64: type = impl_witness_access constants.%L.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst.loc13_64: type = impl_witness_access_substituted %impl.elem0.loc13_64, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] +// CHECK:STDOUT: %impl.elem0.loc13_64.1: type = impl_witness_access constants.%L.lookup_impl_witness.b2f, element0 [symbolic_self = constants.%impl.elem0.faf] +// CHECK:STDOUT: %impl.elem0.subst.loc13_64.1: type = impl_witness_access_substituted %impl.elem0.loc13_64.1, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] // CHECK:STDOUT: %.loc13_71: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_75: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_79: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -471,12 +477,13 @@ fn G() { // CHECK:STDOUT: %.loc13_80.3: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_80.4: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_80.5: type = converted %.loc13_80.1, constants.%tuple.type.d7e [concrete = constants.%tuple.type.d7e] -// CHECK:STDOUT: %.Self.ref.loc13_86: %L.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_86: type = facet_access_type %.Self.ref.loc13_86 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_86: type = converted %.Self.ref.loc13_86, %.Self.as_type.loc13_86 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc13_67.1 = requirement_rewrite %impl.elem0.subst.loc13_64.1, %.loc13_80.5 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_86: %L.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_86: type = facet_access_type %.Self.ref.loc13_86 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_86: type = converted %.Self.ref.loc13_86, %.Self.as_type.loc13_86 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %W.ref.loc13_86: %L.assoc_type = name_ref W, @W.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc13_86: type = impl_witness_access constants.%L.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst.loc13_86: type = impl_witness_access_substituted %impl.elem0.loc13_86, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] +// CHECK:STDOUT: %impl.elem0.loc13_86.1: type = impl_witness_access constants.%L.lookup_impl_witness.b2f, element0 [symbolic_self = constants.%impl.elem0.faf] +// CHECK:STDOUT: %impl.elem0.subst.loc13_86.1: type = impl_witness_access_substituted %impl.elem0.loc13_86.1, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] // CHECK:STDOUT: %.loc13_93: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc13_97: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_101: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] @@ -485,12 +492,24 @@ fn G() { // CHECK:STDOUT: %.loc13_102.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %.loc13_102.4: type = converted constants.%empty_struct, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc13_102.5: type = converted %.loc13_102.1, constants.%tuple.type.bd8 [concrete = constants.%tuple.type.bd8] +// CHECK:STDOUT: %rewrite.loc13_89.1 = requirement_rewrite %impl.elem0.subst.loc13_86.1, %.loc13_102.5 [concrete] +// CHECK:STDOUT: %impl.elem0.loc13_20.2: type = impl_witness_access constants.%L.lookup_impl_witness.2ad, element0 [symbolic_self = constants.%impl.elem0.c42] +// CHECK:STDOUT: %rewrite.loc13_23.2 = requirement_rewrite %impl.elem0.loc13_20.2, %.loc13_36.5 [concrete] +// CHECK:STDOUT: %impl.elem0.loc13_42.2: type = impl_witness_access constants.%L.lookup_impl_witness.2ad, element0 [symbolic_self = constants.%impl.elem0.c42] +// CHECK:STDOUT: %impl.elem0.subst.loc13_42.2: type = impl_witness_access_substituted %impl.elem0.loc13_42.2, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] +// CHECK:STDOUT: %rewrite.loc13_45.2 = requirement_rewrite %impl.elem0.subst.loc13_42.2, %.loc13_58.5 [concrete] +// CHECK:STDOUT: %impl.elem0.loc13_64.2: type = impl_witness_access constants.%L.lookup_impl_witness.2ad, element0 [symbolic_self = constants.%impl.elem0.c42] +// CHECK:STDOUT: %impl.elem0.subst.loc13_64.2: type = impl_witness_access_substituted %impl.elem0.loc13_64.2, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] +// CHECK:STDOUT: %rewrite.loc13_67.2 = requirement_rewrite %impl.elem0.subst.loc13_64.2, %.loc13_80.5 [concrete] +// CHECK:STDOUT: %impl.elem0.loc13_86.2: type = impl_witness_access constants.%L.lookup_impl_witness.2ad, element0 [symbolic_self = constants.%impl.elem0.c42] +// CHECK:STDOUT: %impl.elem0.subst.loc13_86.2: type = impl_witness_access_substituted %impl.elem0.loc13_86.2, %.loc13_36.5 [concrete = constants.%tuple.type.2d5] +// CHECK:STDOUT: %rewrite.loc13_89.2 = requirement_rewrite %impl.elem0.subst.loc13_86.2, %.loc13_102.5 [concrete] // CHECK:STDOUT: %.loc13_14: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %L.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc13_20, %.loc13_36.5 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst.loc13_42, %.loc13_58.5 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst.loc13_64, %.loc13_80.5 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst.loc13_86, %.loc13_102.5 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %L.ref [concrete] +// CHECK:STDOUT: %rewrite.loc13_23.2 = requirement_rewrite %impl.elem0.loc13_20.2, %.loc13_36.5 [concrete] +// CHECK:STDOUT: %rewrite.loc13_45.2 = requirement_rewrite %impl.elem0.subst.loc13_42.2, %.loc13_58.5 [concrete] +// CHECK:STDOUT: %rewrite.loc13_67.2 = requirement_rewrite %impl.elem0.subst.loc13_64.2, %.loc13_80.5 [concrete] +// CHECK:STDOUT: %rewrite.loc13_89.2 = requirement_rewrite %impl.elem0.subst.loc13_86.2, %.loc13_102.5 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -511,12 +530,17 @@ fn G() { // CHECK:STDOUT: %assoc2: %M.assoc_type = assoc_entity element2, @M.WithSelf.%Z [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.Self.frozen: %M.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %M.lookup_impl_witness.beb: = lookup_impl_witness %.Self.frozen, @M [symbolic_self] +// CHECK:STDOUT: %impl.elem0.352: type = impl_witness_access %M.lookup_impl_witness.beb, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.66c: type = impl_witness_access %M.lookup_impl_witness.beb, element1 [symbolic_self] +// CHECK:STDOUT: %impl.elem2.c22: type = impl_witness_access %M.lookup_impl_witness.beb, element2 [symbolic_self] // CHECK:STDOUT: %.Self: %M.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %M.lookup_impl_witness: = lookup_impl_witness %.Self, @M [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %M.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %M.lookup_impl_witness, element1 [symbolic_self] -// CHECK:STDOUT: %impl.elem2: type = impl_witness_access %M.lookup_impl_witness, element2 [symbolic_self] +// CHECK:STDOUT: %M.lookup_impl_witness.e09: = lookup_impl_witness %.Self, @M [symbolic_self] +// CHECK:STDOUT: %impl.elem0.c24: type = impl_witness_access %M.lookup_impl_witness.e09, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.e3e: type = impl_witness_access %M.lookup_impl_witness.e09, element1 [symbolic_self] +// CHECK:STDOUT: %impl.elem2.017: type = impl_witness_access %M.lookup_impl_witness.e09, element2 [symbolic_self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -524,40 +548,54 @@ fn G() { // CHECK:STDOUT: %.loc13_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_7.2: type = converted %.loc13_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] -// CHECK:STDOUT: %.Self: %M.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc13_20: %M.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_20: type = facet_access_type %.Self.ref.loc13_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_20: type = converted %.Self.ref.loc13_20, %.Self.as_type.loc13_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %M.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %M.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_20: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_20: type = facet_access_type %.Self.ref.loc13_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_20: type = converted %.Self.ref.loc13_20, %.Self.as_type.loc13_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc13_20: %M.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc13_20: type = impl_witness_access constants.%M.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %.Self.ref.loc13_25: %M.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_25: type = facet_access_type %.Self.ref.loc13_25 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_25: type = converted %.Self.ref.loc13_25, %.Self.as_type.loc13_25 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impl.elem0.loc13_20.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element0 [symbolic_self = constants.%impl.elem0.352] +// CHECK:STDOUT: %.Self.ref.loc13_25: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_25: type = facet_access_type %.Self.ref.loc13_25 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_25: type = converted %.Self.ref.loc13_25, %.Self.as_type.loc13_25 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y.ref.loc13_25: %M.assoc_type = name_ref Y, @Y.%assoc1 [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1.loc13_25: type = impl_witness_access constants.%M.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %.Self.ref.loc13_32: %M.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_32: type = facet_access_type %.Self.ref.loc13_32 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_32: type = converted %.Self.ref.loc13_32, %.Self.as_type.loc13_32 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impl.elem1.loc13_25.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element1 [symbolic_self = constants.%impl.elem1.66c] +// CHECK:STDOUT: %rewrite.loc13_23.1 = requirement_rewrite %impl.elem0.loc13_20.1, %impl.elem1.loc13_25.1 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_32: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_32: type = facet_access_type %.Self.ref.loc13_32 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_32: type = converted %.Self.ref.loc13_32, %.Self.as_type.loc13_32 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y.ref.loc13_32: %M.assoc_type = name_ref Y, @Y.%assoc1 [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1.loc13_32: type = impl_witness_access constants.%M.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %.Self.ref.loc13_37: %M.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_37: type = facet_access_type %.Self.ref.loc13_37 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_37: type = converted %.Self.ref.loc13_37, %.Self.as_type.loc13_37 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impl.elem1.loc13_32.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element1 [symbolic_self = constants.%impl.elem1.66c] +// CHECK:STDOUT: %.Self.ref.loc13_37: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_37: type = facet_access_type %.Self.ref.loc13_37 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_37: type = converted %.Self.ref.loc13_37, %.Self.as_type.loc13_37 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc13_37: %M.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc13_37: type = impl_witness_access constants.%M.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc13_37, %impl.elem1.loc13_25 [symbolic_self = constants.%impl.elem1] -// CHECK:STDOUT: %.Self.ref.loc13_44: %M.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13_44: type = facet_access_type %.Self.ref.loc13_44 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_44: type = converted %.Self.ref.loc13_44, %.Self.as_type.loc13_44 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impl.elem0.loc13_37.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element0 [symbolic_self = constants.%impl.elem0.352] +// CHECK:STDOUT: %impl.elem0.subst.loc13_37.1: type = impl_witness_access_substituted %impl.elem0.loc13_37.1, %impl.elem1.loc13_25.1 [symbolic_self = constants.%impl.elem1.66c] +// CHECK:STDOUT: %rewrite.loc13_35.1 = requirement_rewrite %impl.elem1.loc13_32.1, %impl.elem0.subst.loc13_37.1 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_44: %M.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13_44: type = facet_access_type %.Self.ref.loc13_44 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_44: type = converted %.Self.ref.loc13_44, %.Self.as_type.loc13_44 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Z.ref: %M.assoc_type = name_ref Z, @Z.%assoc2 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%M.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2] +// CHECK:STDOUT: %impl.elem2.loc13_44.1: type = impl_witness_access constants.%M.lookup_impl_witness.beb, element2 [symbolic_self = constants.%impl.elem2.c22] // CHECK:STDOUT: %.loc13_50.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_50.2: type = converted %.loc13_50.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc13_47.1 = requirement_rewrite %impl.elem2.loc13_44.1, %.loc13_50.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc13_20.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element0 [symbolic_self = constants.%impl.elem0.c24] +// CHECK:STDOUT: %impl.elem1.loc13_25.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e] +// CHECK:STDOUT: %rewrite.loc13_23.2 = requirement_rewrite %impl.elem0.loc13_20.2, %impl.elem1.loc13_25.2 [concrete] +// CHECK:STDOUT: %impl.elem1.loc13_32.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e] +// CHECK:STDOUT: %impl.elem0.loc13_37.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element0 [symbolic_self = constants.%impl.elem0.c24] +// CHECK:STDOUT: %impl.elem1.loc13_25.3: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element1 [symbolic_self = constants.%impl.elem1.e3e] +// CHECK:STDOUT: %impl.elem0.subst.loc13_37.2: type = impl_witness_access_substituted %impl.elem0.loc13_37.2, %impl.elem1.loc13_25.3 [symbolic_self = constants.%impl.elem1.e3e] +// CHECK:STDOUT: %rewrite.loc13_35.2 = requirement_rewrite %impl.elem1.loc13_32.2, %impl.elem0.subst.loc13_37.2 [concrete] +// CHECK:STDOUT: %impl.elem2.loc13_44.2: type = impl_witness_access constants.%M.lookup_impl_witness.e09, element2 [symbolic_self = constants.%impl.elem2.017] +// CHECK:STDOUT: %rewrite.loc13_47.2 = requirement_rewrite %impl.elem2.loc13_44.2, %.loc13_50.2 [concrete] // CHECK:STDOUT: %.loc13_14: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %M.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc13_20, %impl.elem1.loc13_25 -// CHECK:STDOUT: requirement_rewrite %impl.elem1.loc13_32, %impl.elem0.subst -// CHECK:STDOUT: requirement_rewrite %impl.elem2, %.loc13_50.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %M.ref [concrete] +// CHECK:STDOUT: %rewrite.loc13_23.2 = requirement_rewrite %impl.elem0.loc13_20.2, %impl.elem1.loc13_25.2 [concrete] +// CHECK:STDOUT: %rewrite.loc13_35.2 = requirement_rewrite %impl.elem1.loc13_32.2, %impl.elem0.subst.loc13_37.2 [concrete] +// CHECK:STDOUT: %rewrite.loc13_47.2 = requirement_rewrite %impl.elem2.loc13_44.2, %.loc13_50.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // 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 b28dab70b1a2..0c652fce6aa6 100644 --- a/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon +++ b/toolchain/check/testdata/impl/impl_assoc_const_with_prelude.carbon @@ -47,10 +47,10 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.6fc: %I.assoc_type = assoc_entity element0, @I.WithSelf.%X [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %.Self.9e9: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.9e9 [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self.9e9, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0.049: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// 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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.fad: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] @@ -86,8 +86,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %SubWith.type.4c2: type = facet_type <@SubWith, @SubWith(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %SubWith.impl_witness: = impl_witness imports.%SubWith.impl_witness_table [concrete] // CHECK:STDOUT: %SubWith.facet: %SubWith.type.4c2 = facet_value Core.IntLiteral, (%SubWith.impl_witness) [concrete] -// CHECK:STDOUT: %SubWith.WithSelf.Op.type.663: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(Core.IntLiteral, %SubWith.facet) [concrete] -// CHECK:STDOUT: %.ec4: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.663, %SubWith.facet [concrete] +// CHECK:STDOUT: %SubWith.WithSelf.Op.type.3a8: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(Core.IntLiteral, %SubWith.facet) [concrete] +// CHECK:STDOUT: %.005: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.3a8, %SubWith.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.SubWith.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op: %Core.IntLiteral.as.SubWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.bound: = bound_method %int_3, %Core.IntLiteral.as.SubWith.impl.Op [concrete] @@ -97,12 +97,15 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %DivWith.type.e2a: type = facet_type <@DivWith, @DivWith(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %DivWith.impl_witness: = impl_witness imports.%DivWith.impl_witness_table [concrete] // CHECK:STDOUT: %DivWith.facet: %DivWith.type.e2a = facet_value Core.IntLiteral, (%DivWith.impl_witness) [concrete] -// CHECK:STDOUT: %DivWith.WithSelf.Op.type.9c3: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(Core.IntLiteral, %DivWith.facet) [concrete] -// CHECK:STDOUT: %.5ce: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.9c3, %DivWith.facet [concrete] +// CHECK:STDOUT: %DivWith.WithSelf.Op.type.044: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(Core.IntLiteral, %DivWith.facet) [concrete] +// CHECK:STDOUT: %.e55: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.044, %DivWith.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.type: type = fn_type @Core.IntLiteral.as.DivWith.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op: %Core.IntLiteral.as.DivWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.bound: = bound_method %int_4, %Core.IntLiteral.as.DivWith.impl.Op [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.049 = %struct.247> [concrete] +// CHECK:STDOUT: %.Self.f73: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self.f73, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f1e: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.f1e = %struct.247> [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: } @@ -143,12 +146,13 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref.loc6_20: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.as_type.loc6_20: type = facet_access_type %.Self.ref.loc6_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6_20, %.Self.as_type.loc6_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc6_20: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc6_20: type = facet_access_type %.Self.ref.loc6_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6_20, %.Self.as_type.loc6_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc6_20: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.6fc] -// CHECK:STDOUT: %impl.elem0.loc6_20: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.049] +// CHECK:STDOUT: %impl.elem0.loc6_20.1: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.fad] // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc6_46: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] @@ -172,22 +176,23 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %.loc6_48.2: %tuple.type.e55 = converted %.loc6_47.1, %tuple.loc6_47 [concrete = constants.%tuple.102] // CHECK:STDOUT: %struct.loc6_48: %struct_type.a.b.486 = struct_value (%true, %.loc6_48.2) [concrete = constants.%struct.247] // CHECK:STDOUT: %.loc6_48.3: %struct_type.a.b.486 = converted %.loc6_48.1, %struct.loc6_48 [concrete = constants.%struct.247] -// CHECK:STDOUT: %.Self.ref.loc6_54: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.as_type.loc6_54: type = facet_access_type %.Self.ref.loc6_54 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc6_54: type = converted %.Self.ref.loc6_54, %.Self.as_type.loc6_54 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc6_23.1 = requirement_rewrite %impl.elem0.loc6_20.1, %.loc6_48.3 [concrete] +// CHECK:STDOUT: %.Self.ref.loc6_54: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc6_54: type = facet_access_type %.Self.ref.loc6_54 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc6_54: type = converted %.Self.ref.loc6_54, %.Self.as_type.loc6_54 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc6_54: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.6fc] -// CHECK:STDOUT: %impl.elem0.loc6_54: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.049] -// CHECK:STDOUT: %impl.elem0.subst: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc6_54, %.loc6_48.3 [concrete = constants.%struct.247] +// CHECK:STDOUT: %impl.elem0.loc6_54.1: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.fad] +// CHECK:STDOUT: %impl.elem0.subst.loc6_54.1: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc6_54.1, %.loc6_48.3 [concrete = constants.%struct.247] // CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false] // CHECK:STDOUT: %.loc6_65: bool = not %false [concrete = constants.%true] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] // CHECK:STDOUT: %int_2.loc6_86: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem1.loc6_84: %.ec4 = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op] +// CHECK:STDOUT: %impl.elem1.loc6_84: %.005 = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op] // CHECK:STDOUT: %bound_method.loc6_84: = bound_method %int_3, %impl.elem1.loc6_84 [concrete = constants.%Core.IntLiteral.as.SubWith.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.SubWith.impl.Op.call: init Core.IntLiteral = call %bound_method.loc6_84(%int_3, %int_2.loc6_86) [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %int_2.loc6_93: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %impl.elem1.loc6_91: %.5ce = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op] +// CHECK:STDOUT: %impl.elem1.loc6_91: %.e55 = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op] // CHECK:STDOUT: %bound_method.loc6_91: = bound_method %int_4, %impl.elem1.loc6_91 [concrete = constants.%Core.IntLiteral.as.DivWith.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.DivWith.impl.Op.call: init Core.IntLiteral = call %bound_method.loc6_91(%int_4, %int_2.loc6_93) [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %.loc6_94.1: %tuple.type.f94 = tuple_literal (%Core.IntLiteral.as.SubWith.impl.Op.call, %Core.IntLiteral.as.DivWith.impl.Op.call) [concrete = constants.%tuple.ad8] @@ -214,10 +219,16 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %.loc6_95.2: %tuple.type.e55 = converted %.loc6_94.1, %tuple.loc6_94 [concrete = constants.%tuple.102] // CHECK:STDOUT: %struct.loc6_95: %struct_type.a.b.486 = struct_value (%.loc6_65, %.loc6_95.2) [concrete = constants.%struct.247] // CHECK:STDOUT: %.loc6_95.3: %struct_type.a.b.486 = converted %.loc6_95.1, %struct.loc6_95 [concrete = constants.%struct.247] +// CHECK:STDOUT: %rewrite.loc6_57.1 = requirement_rewrite %impl.elem0.subst.loc6_54.1, %.loc6_95.3 [concrete] +// CHECK:STDOUT: %impl.elem0.loc6_20.2: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.f1e] +// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_48.3 [concrete] +// CHECK:STDOUT: %impl.elem0.loc6_54.2: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.f1e] +// CHECK:STDOUT: %impl.elem0.subst.loc6_54.2: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc6_54.2, %.loc6_48.3 [concrete = constants.%struct.247] +// CHECK:STDOUT: %rewrite.loc6_57.2 = requirement_rewrite %impl.elem0.subst.loc6_54.2, %.loc6_95.3 [concrete] // CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6_20, %.loc6_48.3 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc6_95.3 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_48.3 [concrete] +// CHECK:STDOUT: %rewrite.loc6_57.2 = requirement_rewrite %impl.elem0.subst.loc6_54.2, %.loc6_95.3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -255,7 +266,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.9e9) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -278,10 +289,10 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0.6fc: %I.assoc_type = assoc_entity element0, @I.WithSelf.%X [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0.049: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// 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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.fad: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %true: bool = bool_literal true [concrete] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] @@ -323,6 +334,9 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %int_4.4eb: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %tuple.e16: %tuple.type.e55 = tuple_value (%int_3.410, %int_4.4eb) [concrete] // CHECK:STDOUT: %struct.866: %struct_type.a.b.486 = struct_value (%false, %tuple.e16) [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f1e: %struct_type.a.b.486 = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -351,12 +365,13 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc10_20: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_20: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc10_20: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.6fc] -// CHECK:STDOUT: %impl.elem0.loc10_20: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.049] +// CHECK:STDOUT: %impl.elem0.loc10_20.1: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.fad] // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] @@ -380,12 +395,13 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %.loc10_48.2: %tuple.type.e55 = converted %.loc10_47.1, %tuple.loc10_47 [concrete = constants.%tuple.102] // CHECK:STDOUT: %struct.loc10_48: %struct_type.a.b.486 = struct_value (%true, %.loc10_48.2) [concrete = constants.%struct.247] // CHECK:STDOUT: %.loc10_48.3: %struct_type.a.b.486 = converted %.loc10_48.1, %struct.loc10_48 [concrete = constants.%struct.247] -// CHECK:STDOUT: %.Self.ref.loc10_54: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_54: type = facet_access_type %.Self.ref.loc10_54 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_54: type = converted %.Self.ref.loc10_54, %.Self.as_type.loc10_54 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_48.3 [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_54: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_54: type = facet_access_type %.Self.ref.loc10_54 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_54: type = converted %.Self.ref.loc10_54, %.Self.as_type.loc10_54 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc10_54: %I.assoc_type = name_ref X, @X.%assoc0 [concrete = constants.%assoc0.6fc] -// CHECK:STDOUT: %impl.elem0.loc10_54: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.049] -// CHECK:STDOUT: %impl.elem0.subst: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc10_54, %.loc10_48.3 [concrete = constants.%struct.247] +// CHECK:STDOUT: %impl.elem0.loc10_54.1: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.fad] +// CHECK:STDOUT: %impl.elem0.subst.loc10_54.1: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc10_54.1, %.loc10_48.3 [concrete = constants.%struct.247] // CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] @@ -409,10 +425,16 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: %.loc10_83.2: %tuple.type.e55 = converted %.loc10_82.1, %tuple.loc10_82 [concrete = constants.%tuple.e16] // CHECK:STDOUT: %struct.loc10_83: %struct_type.a.b.486 = struct_value (%false, %.loc10_83.2) [concrete = constants.%struct.866] // CHECK:STDOUT: %.loc10_83.3: %struct_type.a.b.486 = converted %.loc10_83.1, %struct.loc10_83 [concrete = constants.%struct.866] +// CHECK:STDOUT: %rewrite.loc10_57.1 = requirement_rewrite %impl.elem0.subst.loc10_54.1, %.loc10_83.3 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_20.2: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.f1e] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_48.3 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_54.2: %struct_type.a.b.486 = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.f1e] +// CHECK:STDOUT: %impl.elem0.subst.loc10_54.2: %struct_type.a.b.486 = impl_witness_access_substituted %impl.elem0.loc10_54.2, %.loc10_48.3 [concrete = constants.%struct.247] +// CHECK:STDOUT: %rewrite.loc10_57.2 = requirement_rewrite %impl.elem0.subst.loc10_54.2, %.loc10_83.3 [concrete] // CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_20, %.loc10_48.3 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc10_83.3 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_48.3 [concrete] +// CHECK:STDOUT: %rewrite.loc10_57.2 = requirement_rewrite %impl.elem0.subst.loc10_54.2, %.loc10_83.3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -446,7 +468,7 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3, // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/impl_forall.carbon b/toolchain/check/testdata/impl/impl_forall.carbon index 49cd4f99195c..44bd13a18270 100644 --- a/toolchain/check/testdata/impl/impl_forall.carbon +++ b/toolchain/check/testdata/impl/impl_forall.carbon @@ -30,7 +30,7 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type @Simple [concrete] // CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.WithSelf.%Simple.WithSelf.F.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -53,7 +53,7 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc19_15.2 [symbolic = %T.loc19_15.1 (constants.%T)] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type] // CHECK:STDOUT: %.loc19_18.1: type = splice_block %.loc19_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc19_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc19_15.1 (constants.%T)] diff --git a/toolchain/check/testdata/impl/impl_thunk.carbon b/toolchain/check/testdata/impl/impl_thunk.carbon index 6469d271ad90..d605db90750f 100644 --- a/toolchain/check/testdata/impl/impl_thunk.carbon +++ b/toolchain/check/testdata/impl/impl_thunk.carbon @@ -1063,7 +1063,7 @@ impl () as I({}) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @empty_tuple.type.as.I.impl.%I.impl_witness_table [concrete] @@ -1131,7 +1131,7 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_32.3: type = converted %U.ref.loc10_32, %U.as_type.loc10_32 [symbolic = %U.as_type.loc10_26.1 (constants.%U.as_type.c1c)] // CHECK:STDOUT: %.loc10_32.4: Core.Form = init_form %.loc10_32.3 [symbolic = %.loc10_32.2 (constants.%.1ce700.2)] // CHECK:STDOUT: %.loc10_16: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } @@ -1270,7 +1270,7 @@ impl () as I({}) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] @@ -1344,7 +1344,7 @@ impl () as I({}) { // CHECK:STDOUT: %.loc10_49.3: type = converted %U.ref.loc10_49, %U.as_type.loc10_49 [symbolic = %U.as_type.loc10_43.1 (constants.%U.as_type.c1c)] // CHECK:STDOUT: %.loc10_49.4: Core.Form = init_form %.loc10_49.3 [symbolic = %.loc10_49.2 (constants.%.1ce700.2)] // CHECK:STDOUT: %.loc10_16: type = splice_block %Copy.ref [concrete = constants.%Copy.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// 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] // CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/import_generic.carbon b/toolchain/check/testdata/impl/import_generic.carbon index 0eebe8d2bb25..481b56767c37 100644 --- a/toolchain/check/testdata/impl/import_generic.carbon +++ b/toolchain/check/testdata/impl/import_generic.carbon @@ -189,7 +189,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -213,7 +213,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc3_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc3_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_17.1: type = splice_block %.loc3_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_14.1 (constants.%T)] @@ -222,7 +222,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] @@ -562,7 +562,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -586,7 +586,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc3_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc3_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_17.1: type = splice_block %.loc3_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_14.1 (constants.%T)] @@ -595,7 +595,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc4_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_18.1: type = splice_block %.loc4_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_15.1 (constants.%T)] @@ -905,7 +905,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -940,7 +940,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_14.1 (constants.%T)] @@ -953,7 +953,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref.loc8: type = name_ref T, %T.loc8_15.1 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.3fe)] // CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc8: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] @@ -966,7 +966,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref.loc9: type = name_ref T, %T.loc9 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc9: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.3fe)] // CHECK:STDOUT: %.loc9_18.1: type = splice_block %.loc9_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] @@ -980,7 +980,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc12_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc12_32.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc12_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc12_33.2 (constants.%I.type.a76)] // CHECK:STDOUT: %.loc12_18.1: type = splice_block %.loc12_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T)] @@ -989,7 +989,7 @@ impl forall [T:! type] D as N(T*) {} // 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: } { // CHECK:STDOUT: %.loc14_18.1: type = splice_block %.loc14_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc14_15.1 (constants.%T)] @@ -1196,7 +1196,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %I.impl_witness.b8e: = impl_witness imports.%I.impl_witness_table.78a, @C.as.I.impl.238(%T) [symbolic] // CHECK:STDOUT: %require_complete.078: = require_complete_type %I.type.a76 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %N.type.b76: type = generic_named_constaint_type @N [concrete] // CHECK:STDOUT: %empty_struct: %N.type.b76 = struct_value () [concrete] // CHECK:STDOUT: %N.type.d682d6.1: type = facet_type <@N, @N(%T)> [symbolic] @@ -1251,7 +1251,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_15.1 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.3fe)] // CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] @@ -1264,7 +1264,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_15.1 [symbolic = %T.loc14_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc14_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc14_32.2 (constants.%I.type.3fe)] // CHECK:STDOUT: %.loc14_18.1: type = splice_block %.loc14_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T)] @@ -1278,7 +1278,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc20_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc20_32.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc20_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc20_33.2 (constants.%I.type.a76)] // CHECK:STDOUT: %.loc20_18.1: type = splice_block %.loc20_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc20_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc20_15.2 (constants.%T)] @@ -1292,7 +1292,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc26_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc26_32.2 (constants.%ptr)] // CHECK:STDOUT: %I.type.loc26_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc26_33.2 (constants.%I.type.a76)] // CHECK:STDOUT: %.loc26_18.1: type = splice_block %.loc26_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc26_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc26_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc26_15.2 (constants.%T)] @@ -1305,7 +1305,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc32_15.1 [symbolic = %T.loc32_15.2 (constants.%T)] // CHECK:STDOUT: %N.type.loc32_32.1: type = facet_type <@N, @N(constants.%T)> [symbolic = %N.type.loc32_32.2 (constants.%N.type.d682d6.1)] // CHECK:STDOUT: %.loc32_18.1: type = splice_block %.loc32_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc32_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc32_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc32_15.2 (constants.%T)] @@ -1319,7 +1319,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc37_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc37_32.2 (constants.%ptr)] // CHECK:STDOUT: %N.type.loc37_33.1: type = facet_type <@N, @N(constants.%ptr)> [symbolic = %N.type.loc37_33.2 (constants.%N.type.d682d6.2)] // CHECK:STDOUT: %.loc37_18.1: type = splice_block %.loc37_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc37_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc37_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc37_15.2 (constants.%T)] @@ -1609,7 +1609,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1638,7 +1638,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_14.1 (constants.%T)] @@ -1651,7 +1651,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_15.1 [symbolic = %T.loc7_15.2 (constants.%T)] // CHECK:STDOUT: %I.type.loc7_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc7_32.2 (constants.%I.type.3fe)] // CHECK:STDOUT: %.loc7_18.1: type = splice_block %.loc7_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.2 (constants.%T)] @@ -1660,7 +1660,7 @@ impl forall [T:! type] D as N(T*) {} // 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: } { // CHECK:STDOUT: %.loc9_18.1: type = splice_block %.loc9_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc9_15.1 (constants.%T)] @@ -1817,7 +1817,7 @@ impl forall [T:! type] D as N(T*) {} // 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: %type = symbolic_binding .Self [symbolic_self] +// 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: %I.impl_witness.0d7: = impl_witness @C.as.I.impl.982.%I.impl_witness_table, @C.as.I.impl.982(%T) [symbolic] @@ -1880,7 +1880,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc5_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc5_32.2 (constants.%ptr.e8f)] // CHECK:STDOUT: %I.type.loc5_33.1: type = facet_type <@I, @I(constants.%ptr.e8f)> [symbolic = %I.type.loc5_33.2 (constants.%I.type.a76)] // CHECK:STDOUT: %.loc5_18.1: type = splice_block %.loc5_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc5_15.2 (constants.%T)] @@ -1895,7 +1895,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc6_33.1: type = ptr_type %ptr.loc6_32.1 [symbolic = %ptr.loc6_33.2 (constants.%ptr.125)] // CHECK:STDOUT: %N.type.loc6_34.1: type = facet_type <@N, @N(constants.%ptr.125)> [symbolic = %N.type.loc6_34.2 (constants.%N.type.d682d6.2)] // CHECK:STDOUT: %.loc6_18.1: type = splice_block %.loc6_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc6_15.2 (constants.%T)] @@ -2129,7 +2129,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -2159,7 +2159,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_14.1 (constants.%T)] @@ -2168,7 +2168,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.patt.loc7_15.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_15.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_18.1: type = splice_block %.loc7_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc7_15.1 (constants.%T)] @@ -2181,7 +2181,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_15.1 [symbolic = %T.loc15_15.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc15_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc15_32.2 (constants.%J.type.5c8)] // CHECK:STDOUT: %.loc15_18.1: type = splice_block %.loc15_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc15_15.2 (constants.%T)] @@ -2195,7 +2195,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc21_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc21_32.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc21_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc21_33.2 (constants.%J.type.c71)] // CHECK:STDOUT: %.loc21_18.1: type = splice_block %.loc21_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc21_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc21_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc21_15.2 (constants.%T)] @@ -2363,7 +2363,7 @@ impl forall [T:! type] D as N(T*) {} // 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] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %N.type.b76: type = generic_named_constaint_type @N [concrete] // CHECK:STDOUT: %empty_struct: %N.type.b76 = struct_value () [concrete] // CHECK:STDOUT: %N.type.d682d6.1: type = facet_type <@N, @N(%T)> [symbolic] @@ -2416,7 +2416,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_15.1 [symbolic = %T.loc8_15.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc8_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc8_32.2 (constants.%J.type.5c8)] // CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T)] @@ -2429,7 +2429,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_15.1 [symbolic = %T.loc14_15.2 (constants.%T)] // CHECK:STDOUT: %J.type.loc14_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc14_32.2 (constants.%J.type.5c8)] // CHECK:STDOUT: %.loc14_18.1: type = splice_block %.loc14_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc14_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc14_15.2 (constants.%T)] @@ -2443,7 +2443,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc20_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc20_32.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc20_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc20_33.2 (constants.%J.type.c71)] // CHECK:STDOUT: %.loc20_18.1: type = splice_block %.loc20_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc20_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc20_15.2 (constants.%T)] @@ -2457,7 +2457,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc26_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc26_32.2 (constants.%ptr)] // CHECK:STDOUT: %J.type.loc26_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc26_33.2 (constants.%J.type.c71)] // CHECK:STDOUT: %.loc26_18.1: type = splice_block %.loc26_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc26_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc26_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc26_15.2 (constants.%T)] @@ -2470,7 +2470,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc32_15.1 [symbolic = %T.loc32_15.2 (constants.%T)] // CHECK:STDOUT: %N.type.loc32_32.1: type = facet_type <@N, @N(constants.%T)> [symbolic = %N.type.loc32_32.2 (constants.%N.type.d682d6.1)] // CHECK:STDOUT: %.loc32_18.1: type = splice_block %.loc32_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc32_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc32_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc32_15.2 (constants.%T)] @@ -2484,7 +2484,7 @@ impl forall [T:! type] D as N(T*) {} // CHECK:STDOUT: %ptr.loc38_32.1: type = ptr_type %T.ref [symbolic = %ptr.loc38_32.2 (constants.%ptr)] // CHECK:STDOUT: %N.type.loc38_33.1: type = facet_type <@N, @N(constants.%ptr)> [symbolic = %N.type.loc38_33.2 (constants.%N.type.d682d6.2)] // CHECK:STDOUT: %.loc38_18.1: type = splice_block %.loc38_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc38_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc38_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc38_15.2 (constants.%T)] diff --git a/toolchain/check/testdata/impl/import_interface_assoc_const.carbon b/toolchain/check/testdata/impl/import_interface_assoc_const.carbon index 3b5b38e74e20..005beb1dff2d 100644 --- a/toolchain/check/testdata/impl/import_interface_assoc_const.carbon +++ b/toolchain/check/testdata/impl/import_interface_assoc_const.carbon @@ -313,14 +313,17 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [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: } @@ -348,17 +351,21 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @C1.as.I.impl [concrete] {} { // CHECK:STDOUT: %C1.ref: type = name_ref C1, file.%C1.decl [concrete = constants.%C1] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc5_23.1 = requirement_rewrite %impl.elem0.loc5_20.1, %.loc5_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc5_26.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -396,7 +403,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -412,14 +419,17 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [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: } @@ -447,33 +457,41 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @C2.as.I.impl [concrete] {} { // CHECK:STDOUT: %C2.ref.loc5: type = name_ref C2, file.%C2.decl [concrete = constants.%C2] // CHECK:STDOUT: %I.ref.loc5: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc5: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc5: %I.type = name_ref .Self, %.Self.loc5 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc5: type = facet_access_type %.Self.ref.loc5 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref.loc5, %.Self.as_type.loc5 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc5: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc5 = requirement_base_facet_type %I.ref.loc5 [concrete] +// CHECK:STDOUT: %.Self.ref.loc5: %I.type = name_ref .Self, %.Self.frozen.loc5 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc5: type = facet_access_type %.Self.ref.loc5 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref.loc5, %.Self.as_type.loc5 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc5: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc5: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc5_23.1 = requirement_rewrite %impl.elem0.loc5_20.1, %.loc5_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc5 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc5, %.loc5_26.2 +// CHECK:STDOUT: %base_facet_type.loc5 = requirement_base_facet_type %I.ref.loc5 [concrete] +// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // 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] -// CHECK:STDOUT: %.Self.loc6: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc6: %I.type = name_ref .Self, %.Self.loc6 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc6: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc6 = requirement_base_facet_type %I.ref.loc6 [concrete] +// CHECK:STDOUT: %.Self.ref.loc6: %I.type = name_ref .Self, %.Self.frozen.loc6 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc6: type = facet_access_type %.Self.ref.loc6 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6, %.Self.as_type.loc6 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc6: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc6: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc6_23.1 = requirement_rewrite %impl.elem0.loc6_20.1, %.loc6_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete] // CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref.loc6 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6, %.loc6_26.2 +// CHECK:STDOUT: %base_facet_type.loc6 = requirement_base_facet_type %I.ref.loc6 [concrete] +// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -511,7 +529,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -527,16 +545,19 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] -// CHECK:STDOUT: %I.impl_witness.a69: = impl_witness @C3.as.I.impl.05f.%I.impl_witness_table [concrete] -// CHECK:STDOUT: %I.facet: %I.type = facet_value %C3, (%I.impl_witness.a69) [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %I.impl_witness.09a: = impl_witness @C3.as.I.impl.e54.%I.impl_witness_table [concrete] +// CHECK:STDOUT: %I.facet: %I.type = facet_value %C3, (%I.impl_witness.09a) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -563,20 +584,24 @@ 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: impl_decl @C3.as.I.impl.05f [concrete] {} { +// CHECK:STDOUT: impl_decl @C3.as.I.impl.e54 [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] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] // CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_26.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -594,9 +619,9 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: // CHECK:STDOUT: impl @C3.as.I.impl.a51: %C3.ref as %I.ref; // CHECK:STDOUT: -// CHECK:STDOUT: impl @C3.as.I.impl.05f: %C3.ref as %.loc10_14 { -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C3.as.I.impl.05f [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.a69] +// CHECK:STDOUT: impl @C3.as.I.impl.e54: %C3.ref as %.loc10_14 { +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C3.as.I.impl.e54 [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.09a] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -616,7 +641,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -632,19 +657,22 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %I_where.type.f3a: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type.7df: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %I_where.type.f02: type = facet_type <@I where %impl.elem0 = %empty_tuple.type> [concrete] -// CHECK:STDOUT: %I.impl_witness.7eb: = impl_witness @C4.as.I.impl.f4b.%I.impl_witness_table [concrete] -// CHECK:STDOUT: %I.facet: %I.type = facet_value %C4, (%I.impl_witness.7eb) [concrete] +// CHECK:STDOUT: %I_where.type.faf: type = facet_type <@I where %impl.elem0.e55 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %I.impl_witness.829: = impl_witness @C4.as.I.impl.775.%I.impl_witness_table [concrete] +// CHECK:STDOUT: %I.facet: %I.type = facet_value %C4, (%I.impl_witness.829) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -667,36 +695,44 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C4.decl: type = class_decl @C4 [concrete = constants.%C4] {} {} -// CHECK:STDOUT: impl_decl @C4.as.I.impl.eff [concrete] {} { +// CHECK:STDOUT: impl_decl @C4.as.I.impl.332 [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] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc9_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc9_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_26.2: type = converted %.loc9_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.loc9_14: type = where_expr [concrete = constants.%I_where.type.f3a] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc9_26.2 +// CHECK:STDOUT: %rewrite.loc9_23.1 = requirement_rewrite %impl.elem0.loc9_20.1, %.loc9_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc9_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc9_23.2 = requirement_rewrite %impl.elem0.loc9_20.2, %.loc9_26.2 [concrete] +// CHECK:STDOUT: %.loc9_14: type = where_expr [concrete = constants.%I_where.type.7df] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc9_23.2 = requirement_rewrite %impl.elem0.loc9_20.2, %.loc9_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @C4.as.I.impl.f4b [concrete] {} { +// CHECK:STDOUT: impl_decl @C4.as.I.impl.775 [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] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc10_26.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type.f02] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_26.2 +// CHECK:STDOUT: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = constants.%I_where.type.faf] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -712,11 +748,11 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @C4.as.I.impl.eff: %C4.ref as %.loc9_14; +// CHECK:STDOUT: impl @C4.as.I.impl.332: %C4.ref as %.loc9_14; // CHECK:STDOUT: -// CHECK:STDOUT: impl @C4.as.I.impl.f4b: %C4.ref as %.loc10_14 { -// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C4.as.I.impl.f4b [concrete] -// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.7eb] +// CHECK:STDOUT: impl @C4.as.I.impl.775: %C4.ref as %.loc10_14 { +// CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C4.as.I.impl.775 [concrete] +// CHECK:STDOUT: %I.impl_witness: = impl_witness %I.impl_witness_table [concrete = constants.%I.impl_witness.829] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -736,7 +772,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -752,18 +788,23 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %I3.type: type = facet_type <@I3> [concrete] // CHECK:STDOUT: %Self: %I3.type = symbolic_binding Self, 0 [symbolic] -// CHECK:STDOUT: %.Self: %I3.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %I3.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %I3.assoc_type: type = assoc_entity_type @I3 [concrete] // CHECK:STDOUT: %assoc0: %I3.assoc_type = assoc_entity element0, imports.%Main.import_ref.d9b [concrete] -// CHECK:STDOUT: %I3.lookup_impl_witness: = lookup_impl_witness %.Self, @I3 [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I3.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I3.lookup_impl_witness.f3f: = lookup_impl_witness %.Self.frozen, @I3 [symbolic_self] +// CHECK:STDOUT: %impl.elem0.3c1: type = impl_witness_access %I3.lookup_impl_witness.f3f, element0 [symbolic_self] // CHECK:STDOUT: %assoc1: %I3.assoc_type = assoc_entity element1, imports.%Main.import_ref.680 [concrete] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %I3.lookup_impl_witness, element1 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.c6b: type = impl_witness_access %I3.lookup_impl_witness.f3f, element1 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_struct_type} [concrete] // CHECK:STDOUT: %assoc2: %I3.assoc_type = assoc_entity element2, imports.%Main.import_ref.3b5 [concrete] -// CHECK:STDOUT: %impl.elem2: type = impl_witness_access %I3.lookup_impl_witness, element2 [symbolic_self] +// CHECK:STDOUT: %impl.elem2.0e3: type = impl_witness_access %I3.lookup_impl_witness.f3f, element2 [symbolic_self] +// CHECK:STDOUT: %.Self: %I3.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I3.lookup_impl_witness.d94: = lookup_impl_witness %.Self, @I3 [symbolic_self] +// CHECK:STDOUT: %impl.elem0.058: type = impl_witness_access %I3.lookup_impl_witness.d94, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.ef6: type = impl_witness_access %I3.lookup_impl_witness.d94, element1 [symbolic_self] +// CHECK:STDOUT: %impl.elem2.8ce: type = impl_witness_access %I3.lookup_impl_witness.d94, element2 [symbolic_self] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_struct_type} [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -802,63 +843,83 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @C5.as..impl.f79ae5.1 [concrete] {} { // CHECK:STDOUT: %C5.ref: type = name_ref C5, file.%C5.decl [concrete = constants.%C5] // CHECK:STDOUT: %I3.ref: type = name_ref I3, imports.%Main.I3 [concrete = constants.%I3.type] -// CHECK:STDOUT: %.Self: %I3.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc17_21: %I3.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc17_21: type = facet_access_type %.Self.ref.loc17_21 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc17_21: type = converted %.Self.ref.loc17_21, %.Self.as_type.loc17_21 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I3.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I3.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc17_21: %I3.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc17_21: type = facet_access_type %.Self.ref.loc17_21 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc17_21: type = converted %.Self.ref.loc17_21, %.Self.as_type.loc17_21 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T1.ref: %I3.assoc_type = name_ref T1, imports.%Main.import_ref.e53 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I3.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc17_21.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element0 [symbolic_self = constants.%impl.elem0.3c1] // CHECK:STDOUT: %BAD1.ref: = name_ref BAD1, [concrete = ] -// CHECK:STDOUT: %.Self.ref.loc17_36: %I3.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc17_36: type = facet_access_type %.Self.ref.loc17_36 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc17_36: type = converted %.Self.ref.loc17_36, %.Self.as_type.loc17_36 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc17_25.1 = requirement_rewrite %impl.elem0.loc17_21.1, [concrete] +// CHECK:STDOUT: %.Self.ref.loc17_36: %I3.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc17_36: type = facet_access_type %.Self.ref.loc17_36 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc17_36: type = converted %.Self.ref.loc17_36, %.Self.as_type.loc17_36 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T2.ref: %I3.assoc_type = name_ref T2, imports.%Main.import_ref.7af [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%I3.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] +// CHECK:STDOUT: %impl.elem1.loc17_36.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element1 [symbolic_self = constants.%impl.elem1.c6b] // CHECK:STDOUT: %.loc17_48.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc17_48.2: type = converted %.loc17_48.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_struct_type} [concrete = constants.%struct_type.a] -// CHECK:STDOUT: %.Self.ref.loc17_55: %I3.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc17_55: type = facet_access_type %.Self.ref.loc17_55 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc17_55: type = converted %.Self.ref.loc17_55, %.Self.as_type.loc17_55 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc17_40.1 = requirement_rewrite %impl.elem1.loc17_36.1, %struct_type.a [concrete] +// CHECK:STDOUT: %.Self.ref.loc17_55: %I3.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc17_55: type = facet_access_type %.Self.ref.loc17_55 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc17_55: type = converted %.Self.ref.loc17_55, %.Self.as_type.loc17_55 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T3.ref: %I3.assoc_type = name_ref T3, imports.%Main.import_ref.c31 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%I3.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2] +// CHECK:STDOUT: %impl.elem2.loc17_55.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element2 [symbolic_self = constants.%impl.elem2.0e3] // CHECK:STDOUT: %BAD2.ref: = name_ref BAD2, [concrete = ] +// CHECK:STDOUT: %rewrite.loc17_59.1 = requirement_rewrite %impl.elem2.loc17_55.1, [concrete] +// CHECK:STDOUT: %impl.elem0.loc17_21.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element0 [symbolic_self = constants.%impl.elem0.058] +// CHECK:STDOUT: %rewrite.loc17_25.2 = requirement_rewrite %impl.elem0.loc17_21.2, [concrete] +// CHECK:STDOUT: %impl.elem1.loc17_36.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element1 [symbolic_self = constants.%impl.elem1.ef6] +// CHECK:STDOUT: %rewrite.loc17_40.2 = requirement_rewrite %impl.elem1.loc17_36.2, %struct_type.a [concrete] +// CHECK:STDOUT: %impl.elem2.loc17_55.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element2 [symbolic_self = constants.%impl.elem2.8ce] +// CHECK:STDOUT: %rewrite.loc17_59.2 = requirement_rewrite %impl.elem2.loc17_55.2, [concrete] // CHECK:STDOUT: %.loc17_15: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I3.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, -// CHECK:STDOUT: requirement_rewrite %impl.elem1, %struct_type.a -// CHECK:STDOUT: requirement_rewrite %impl.elem2, +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I3.ref [concrete] +// CHECK:STDOUT: %rewrite.loc17_25.2 = requirement_rewrite %impl.elem0.loc17_21.2, [concrete] +// CHECK:STDOUT: %rewrite.loc17_40.2 = requirement_rewrite %impl.elem1.loc17_36.2, %struct_type.a [concrete] +// CHECK:STDOUT: %rewrite.loc17_59.2 = requirement_rewrite %impl.elem2.loc17_55.2, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @C5.as..impl.f79ae5.2 [concrete] {} { // CHECK:STDOUT: %C5.ref: type = name_ref C5, file.%C5.decl [concrete = constants.%C5] // CHECK:STDOUT: %I3.ref: type = name_ref I3, imports.%Main.I3 [concrete = constants.%I3.type] -// CHECK:STDOUT: %.Self: %I3.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc27_21: %I3.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc27_21: type = facet_access_type %.Self.ref.loc27_21 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc27_21: type = converted %.Self.ref.loc27_21, %.Self.as_type.loc27_21 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I3.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I3.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc27_21: %I3.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc27_21: type = facet_access_type %.Self.ref.loc27_21 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc27_21: type = converted %.Self.ref.loc27_21, %.Self.as_type.loc27_21 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T1.ref: %I3.assoc_type = name_ref T1, imports.%Main.import_ref.e53 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I3.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc27_21.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element0 [symbolic_self = constants.%impl.elem0.3c1] // CHECK:STDOUT: %.loc27_33.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc27_33.2: type = converted %.loc27_33.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_struct_type} [concrete = constants.%struct_type.b] -// CHECK:STDOUT: %.Self.ref.loc27_40: %I3.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc27_40: type = facet_access_type %.Self.ref.loc27_40 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc27_40: type = converted %.Self.ref.loc27_40, %.Self.as_type.loc27_40 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc27_25.1 = requirement_rewrite %impl.elem0.loc27_21.1, %struct_type.b [concrete] +// CHECK:STDOUT: %.Self.ref.loc27_40: %I3.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc27_40: type = facet_access_type %.Self.ref.loc27_40 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc27_40: type = converted %.Self.ref.loc27_40, %.Self.as_type.loc27_40 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T2.ref: %I3.assoc_type = name_ref T2, imports.%Main.import_ref.7af [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%I3.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] +// CHECK:STDOUT: %impl.elem1.loc27_40.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element1 [symbolic_self = constants.%impl.elem1.c6b] // CHECK:STDOUT: %BAD3.ref: = name_ref BAD3, [concrete = ] -// CHECK:STDOUT: %.Self.ref.loc27_55: %I3.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc27_55: type = facet_access_type %.Self.ref.loc27_55 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc27_55: type = converted %.Self.ref.loc27_55, %.Self.as_type.loc27_55 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc27_44.1 = requirement_rewrite %impl.elem1.loc27_40.1, [concrete] +// CHECK:STDOUT: %.Self.ref.loc27_55: %I3.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc27_55: type = facet_access_type %.Self.ref.loc27_55 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc27_55: type = converted %.Self.ref.loc27_55, %.Self.as_type.loc27_55 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T3.ref: %I3.assoc_type = name_ref T3, imports.%Main.import_ref.c31 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2: type = impl_witness_access constants.%I3.lookup_impl_witness, element2 [symbolic_self = constants.%impl.elem2] +// CHECK:STDOUT: %impl.elem2.loc27_55.1: type = impl_witness_access constants.%I3.lookup_impl_witness.f3f, element2 [symbolic_self = constants.%impl.elem2.0e3] // CHECK:STDOUT: %BAD4.ref: = name_ref BAD4, [concrete = ] +// CHECK:STDOUT: %rewrite.loc27_59.1 = requirement_rewrite %impl.elem2.loc27_55.1, [concrete] +// CHECK:STDOUT: %impl.elem0.loc27_21.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element0 [symbolic_self = constants.%impl.elem0.058] +// CHECK:STDOUT: %rewrite.loc27_25.2 = requirement_rewrite %impl.elem0.loc27_21.2, %struct_type.b [concrete] +// CHECK:STDOUT: %impl.elem1.loc27_40.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element1 [symbolic_self = constants.%impl.elem1.ef6] +// CHECK:STDOUT: %rewrite.loc27_44.2 = requirement_rewrite %impl.elem1.loc27_40.2, [concrete] +// CHECK:STDOUT: %impl.elem2.loc27_55.2: type = impl_witness_access constants.%I3.lookup_impl_witness.d94, element2 [symbolic_self = constants.%impl.elem2.8ce] +// CHECK:STDOUT: %rewrite.loc27_59.2 = requirement_rewrite %impl.elem2.loc27_55.2, [concrete] // CHECK:STDOUT: %.loc27_15: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I3.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %struct_type.b -// CHECK:STDOUT: requirement_rewrite %impl.elem1, -// CHECK:STDOUT: requirement_rewrite %impl.elem2, +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I3.ref [concrete] +// CHECK:STDOUT: %rewrite.loc27_25.2 = requirement_rewrite %impl.elem0.loc27_21.2, %struct_type.b [concrete] +// CHECK:STDOUT: %rewrite.loc27_44.2 = requirement_rewrite %impl.elem1.loc27_40.2, [concrete] +// CHECK:STDOUT: %rewrite.loc27_59.2 = requirement_rewrite %impl.elem2.loc27_55.2, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -896,7 +957,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I3.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I3.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -908,14 +969,17 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [concrete] // CHECK:STDOUT: %I.impl_witness.a68: = impl_witness @C6.as.I.impl.e1b.%I.impl_witness_table [concrete] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C6, (%I.impl_witness.a68) [concrete] // CHECK:STDOUT: } @@ -940,20 +1004,24 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C6.decl: type = class_decl @C6 [concrete = constants.%C6] {} {} -// CHECK:STDOUT: impl_decl @C6.as.I.impl.6c7 [concrete] {} { +// CHECK:STDOUT: impl_decl @C6.as.I.impl.07b [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: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc5_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc5_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc5_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc5_26.2: type = converted %.loc5_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc5_23.1 = requirement_rewrite %impl.elem0.loc5_20.1, %.loc5_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc5_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: %.loc5_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc5_26.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc5_23.2 = requirement_rewrite %impl.elem0.loc5_20.2, %.loc5_26.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @C6.as.I.impl.e1b [concrete] {} { @@ -973,7 +1041,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @C6.as.I.impl.6c7: %C6.ref as %.loc5_14; +// CHECK:STDOUT: impl @C6.as.I.impl.07b: %C6.ref as %.loc5_14; // CHECK:STDOUT: // CHECK:STDOUT: impl @C6.as.I.impl.e1b: %C6.ref as %I.ref { // CHECK:STDOUT: %I.impl_witness_table = impl_witness_table (), @C6.as.I.impl.e1b [concrete] @@ -996,7 +1064,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1012,15 +1080,18 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1046,26 +1117,34 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @C7.as..impl [concrete] {} { // CHECK:STDOUT: %C7.ref: type = name_ref C7, file.%C7.decl [concrete = constants.%C7] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc10_20: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_20: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc10_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc10_20: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.Self.ref.loc10_32: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_32: type = facet_access_type %.Self.ref.loc10_32 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_32, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_32: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_32: type = facet_access_type %.Self.ref.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_32, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc10_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc10_32: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc10_32, %.loc10_26.2 [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %impl.elem0.loc10_32.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] +// CHECK:STDOUT: %impl.elem0.subst.loc10_32.1: type = impl_witness_access_substituted %impl.elem0.loc10_32.1, %.loc10_26.2 [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc10_38.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_38.2: type = converted %.loc10_38.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc10_35.1 = requirement_rewrite %impl.elem0.subst.loc10_32.1, %.loc10_38.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_32.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %impl.elem0.subst.loc10_32.2: type = impl_witness_access_substituted %impl.elem0.loc10_32.2, %.loc10_26.2 [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc10_35.2 = requirement_rewrite %impl.elem0.subst.loc10_32.2, %.loc10_38.2 [concrete] // CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_20, %.loc10_26.2 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc10_38.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %rewrite.loc10_35.2 = requirement_rewrite %impl.elem0.subst.loc10_32.2, %.loc10_38.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1099,7 +1178,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1111,14 +1190,17 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1145,25 +1227,33 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @C8.as..impl [concrete] {} { // CHECK:STDOUT: %C8.ref: type = name_ref C8, file.%C8.decl [concrete = constants.%C8] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc10_20: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_20: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc10_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc10_20: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %BAD5.ref: = name_ref BAD5, [concrete = ] -// CHECK:STDOUT: %.Self.ref.loc10_34: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_34: type = facet_access_type %.Self.ref.loc10_34 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_34: type = converted %.Self.ref.loc10_34, %.Self.as_type.loc10_34 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_34: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_34: type = facet_access_type %.Self.ref.loc10_34 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_34: type = converted %.Self.ref.loc10_34, %.Self.as_type.loc10_34 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc10_34: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc10_34: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc10_34, [concrete = ] +// CHECK:STDOUT: %impl.elem0.loc10_34.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] +// CHECK:STDOUT: %impl.elem0.subst.loc10_34.1: type = impl_witness_access_substituted %impl.elem0.loc10_34.1, [concrete = ] // CHECK:STDOUT: %.loc10_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_40.2: type = converted %.loc10_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc10_37.1 = requirement_rewrite %impl.elem0.subst.loc10_34.1, %.loc10_40.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_34.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %impl.elem0.subst.loc10_34.2: type = impl_witness_access_substituted %impl.elem0.loc10_34.2, [concrete = ] +// CHECK:STDOUT: %rewrite.loc10_37.2 = requirement_rewrite %impl.elem0.subst.loc10_34.2, %.loc10_40.2 [concrete] // CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_20, -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc10_40.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, [concrete] +// CHECK:STDOUT: %rewrite.loc10_37.2 = requirement_rewrite %impl.elem0.subst.loc10_34.2, %.loc10_40.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1197,7 +1287,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1209,13 +1299,16 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1242,25 +1335,33 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @C9.as..impl [concrete] {} { // CHECK:STDOUT: %C9.ref: type = name_ref C9, file.%C9.decl [concrete = constants.%C9] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc10_20: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_20: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_20: type = facet_access_type %.Self.ref.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_20: type = converted %.Self.ref.loc10_20, %.Self.as_type.loc10_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc10_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc10_20: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc10_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc10_26.2: type = converted %.loc10_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.Self.ref.loc10_32: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_32: type = facet_access_type %.Self.ref.loc10_32 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_32, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc10_23.1 = requirement_rewrite %impl.elem0.loc10_20.1, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_32: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_32: type = facet_access_type %.Self.ref.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_32, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc10_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc10_32: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc10_32, %.loc10_26.2 [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %impl.elem0.loc10_32.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] +// CHECK:STDOUT: %impl.elem0.subst.loc10_32.1: type = impl_witness_access_substituted %impl.elem0.loc10_32.1, %.loc10_26.2 [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %BAD6.ref: = name_ref BAD6, [concrete = ] +// CHECK:STDOUT: %rewrite.loc10_35.1 = requirement_rewrite %impl.elem0.subst.loc10_32.1, [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_32.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %impl.elem0.subst.loc10_32.2: type = impl_witness_access_substituted %impl.elem0.loc10_32.2, %.loc10_26.2 [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc10_35.2 = requirement_rewrite %impl.elem0.subst.loc10_32.2, [concrete] // CHECK:STDOUT: %.loc10_14: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_20, %.loc10_26.2 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_23.2 = requirement_rewrite %impl.elem0.loc10_20.2, %.loc10_26.2 [concrete] +// CHECK:STDOUT: %rewrite.loc10_35.2 = requirement_rewrite %impl.elem0.subst.loc10_32.2, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1294,7 +1395,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1306,12 +1407,15 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1339,24 +1443,32 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @CA.as..impl [concrete] {} { // CHECK:STDOUT: %CA.ref: type = name_ref CA, file.%CA.decl [concrete = constants.%CA] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc14_20: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc14_20: type = facet_access_type %.Self.ref.loc14_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc14_20: type = converted %.Self.ref.loc14_20, %.Self.as_type.loc14_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc14_20: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc14_20: type = facet_access_type %.Self.ref.loc14_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc14_20: type = converted %.Self.ref.loc14_20, %.Self.as_type.loc14_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc14_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc14_20: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc14_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %BAD7.ref: = name_ref BAD7, [concrete = ] -// CHECK:STDOUT: %.Self.ref.loc14_34: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc14_34: type = facet_access_type %.Self.ref.loc14_34 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc14_34: type = converted %.Self.ref.loc14_34, %.Self.as_type.loc14_34 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc14_23.1 = requirement_rewrite %impl.elem0.loc14_20.1, [concrete] +// CHECK:STDOUT: %.Self.ref.loc14_34: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc14_34: type = facet_access_type %.Self.ref.loc14_34 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc14_34: type = converted %.Self.ref.loc14_34, %.Self.as_type.loc14_34 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc14_34: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc14_34: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc14_34, [concrete = ] +// CHECK:STDOUT: %impl.elem0.loc14_34.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] +// CHECK:STDOUT: %impl.elem0.subst.loc14_34.1: type = impl_witness_access_substituted %impl.elem0.loc14_34.1, [concrete = ] // CHECK:STDOUT: %BAD8.ref: = name_ref BAD8, [concrete = ] +// CHECK:STDOUT: %rewrite.loc14_37.1 = requirement_rewrite %impl.elem0.subst.loc14_34.1, [concrete] +// CHECK:STDOUT: %impl.elem0.loc14_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc14_23.2 = requirement_rewrite %impl.elem0.loc14_20.2, [concrete] +// CHECK:STDOUT: %impl.elem0.loc14_34.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %impl.elem0.subst.loc14_34.2: type = impl_witness_access_substituted %impl.elem0.loc14_34.2, [concrete = ] +// CHECK:STDOUT: %rewrite.loc14_37.2 = requirement_rewrite %impl.elem0.subst.loc14_34.2, [concrete] // CHECK:STDOUT: %.loc14_14: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc14_20, -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc14_23.2 = requirement_rewrite %impl.elem0.loc14_20.2, [concrete] +// CHECK:STDOUT: %rewrite.loc14_37.2 = requirement_rewrite %impl.elem0.subst.loc14_34.2, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1390,7 +1502,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1402,14 +1514,17 @@ 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: %.Self: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// 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] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.c4c [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.e55 = %empty_struct_type> [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: } @@ -1437,26 +1552,34 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @CB.as.I.impl [concrete] {} { // CHECK:STDOUT: %CB.ref: type = name_ref CB, file.%CB.decl [concrete = constants.%CB] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc6_20: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc6_20: type = facet_access_type %.Self.ref.loc6_20 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6_20, %.Self.as_type.loc6_20 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc6_20: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc6_20: type = facet_access_type %.Self.ref.loc6_20 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc6_20: type = converted %.Self.ref.loc6_20, %.Self.as_type.loc6_20 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc6_20: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc6_20: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc6_20.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc6_26.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_26.2: type = converted %.loc6_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %.Self.ref.loc6_32: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc6_32: type = facet_access_type %.Self.ref.loc6_32 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc6_32: type = converted %.Self.ref.loc6_32, %.Self.as_type.loc6_32 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc6_23.1 = requirement_rewrite %impl.elem0.loc6_20.1, %.loc6_26.2 [concrete] +// CHECK:STDOUT: %.Self.ref.loc6_32: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc6_32: type = facet_access_type %.Self.ref.loc6_32 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc6_32: type = converted %.Self.ref.loc6_32, %.Self.as_type.loc6_32 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc6_32: %I.assoc_type = name_ref T, imports.%Main.import_ref.b8f [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc6_32: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc6_32, %.loc6_26.2 [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %impl.elem0.loc6_32.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] +// CHECK:STDOUT: %impl.elem0.subst.loc6_32.1: type = impl_witness_access_substituted %impl.elem0.loc6_32.1, %.loc6_26.2 [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %.loc6_38.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_38.2: type = converted %.loc6_38.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc6_35.1 = requirement_rewrite %impl.elem0.subst.loc6_32.1, %.loc6_38.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc6_20.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc6_32.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %impl.elem0.subst.loc6_32.2: type = impl_witness_access_substituted %impl.elem0.loc6_32.2, %.loc6_26.2 [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc6_35.2 = requirement_rewrite %impl.elem0.subst.loc6_32.2, %.loc6_38.2 [concrete] // CHECK:STDOUT: %.loc6_14: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc6_20, %.loc6_26.2 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %.loc6_38.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc6_23.2 = requirement_rewrite %impl.elem0.loc6_20.2, %.loc6_26.2 [concrete] +// CHECK:STDOUT: %rewrite.loc6_35.2 = requirement_rewrite %impl.elem0.subst.loc6_32.2, %.loc6_38.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1494,7 +1617,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1510,16 +1633,19 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %NonType.type: type = facet_type <@NonType> [concrete] // CHECK:STDOUT: %Self: %NonType.type = symbolic_binding Self, 0 [symbolic] -// CHECK:STDOUT: %.Self: %NonType.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %NonType.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %NonType.assoc_type: type = assoc_entity_type @NonType [concrete] // CHECK:STDOUT: %assoc0: %NonType.assoc_type = assoc_entity element0, imports.%Main.import_ref.336 [concrete] -// CHECK:STDOUT: %NonType.lookup_impl_witness: = lookup_impl_witness %.Self, @NonType [symbolic_self] +// CHECK:STDOUT: %NonType.lookup_impl_witness.ce8: = lookup_impl_witness %.Self.frozen, @NonType [symbolic_self] // CHECK:STDOUT: %struct_type.a.225: type = struct_type {.a: %empty_struct_type} [concrete] -// CHECK:STDOUT: %impl.elem0: %struct_type.a.225 = impl_witness_access %NonType.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem0.c6b: %struct_type.a.225 = impl_witness_access %NonType.lookup_impl_witness.ce8, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] // CHECK:STDOUT: %struct: %struct_type.a.225 = struct_value (%empty_struct) [concrete] -// CHECK:STDOUT: %NonType_where.type: type = facet_type <@NonType where %impl.elem0 = %struct> [concrete] +// CHECK:STDOUT: %.Self: %NonType.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %NonType.lookup_impl_witness.6ba: = lookup_impl_witness %.Self, @NonType [symbolic_self] +// CHECK:STDOUT: %impl.elem0.170: %struct_type.a.225 = impl_witness_access %NonType.lookup_impl_witness.6ba, element0 [symbolic_self] +// CHECK:STDOUT: %NonType_where.type: type = facet_type <@NonType where %impl.elem0.170 = %struct> [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: } @@ -1547,21 +1673,25 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @CC.as.NonType.impl [concrete] {} { // CHECK:STDOUT: %CC.ref: type = name_ref CC, file.%CC.decl [concrete = constants.%CC] // CHECK:STDOUT: %NonType.ref: type = name_ref NonType, imports.%Main.NonType [concrete = constants.%NonType.type] -// CHECK:STDOUT: %.Self: %NonType.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %NonType.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc6_26: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %NonType.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %NonType.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %NonType.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc6_26: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y.ref: %NonType.assoc_type = name_ref Y, imports.%Main.import_ref.6c1 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %struct_type.a.225 = impl_witness_access constants.%NonType.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc6_26.1: %struct_type.a.225 = impl_witness_access constants.%NonType.lookup_impl_witness.ce8, element0 [symbolic_self = constants.%impl.elem0.c6b] // CHECK:STDOUT: %.loc6_38: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_39.1: %struct_type.a.225 = struct_literal (%.loc6_38) [concrete = constants.%struct] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc6_39.2: %empty_struct_type = converted %.loc6_38, %empty_struct [concrete = constants.%empty_struct] // CHECK:STDOUT: %struct: %struct_type.a.225 = struct_value (%.loc6_39.2) [concrete = constants.%struct] // CHECK:STDOUT: %.loc6_39.3: %struct_type.a.225 = converted %.loc6_39.1, %struct [concrete = constants.%struct] +// CHECK:STDOUT: %rewrite.loc6_29.1 = requirement_rewrite %impl.elem0.loc6_26.1, %.loc6_39.3 [concrete] +// CHECK:STDOUT: %impl.elem0.loc6_26.2: %struct_type.a.225 = impl_witness_access constants.%NonType.lookup_impl_witness.6ba, element0 [symbolic_self = constants.%impl.elem0.170] +// CHECK:STDOUT: %rewrite.loc6_29.2 = requirement_rewrite %impl.elem0.loc6_26.2, %.loc6_39.3 [concrete] // CHECK:STDOUT: %.loc6_20: type = where_expr [concrete = constants.%NonType_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %NonType.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc6_39.3 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %NonType.ref [concrete] +// CHECK:STDOUT: %rewrite.loc6_29.2 = requirement_rewrite %impl.elem0.loc6_26.2, %.loc6_39.3 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1599,7 +1729,7 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @NonType.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @NonType.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1661,23 +1791,28 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: %Self: %IF.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %IF.WithSelf.F.type.0ae: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%Self) [symbolic] // CHECK:STDOUT: %IF.WithSelf.F.1e7: %IF.WithSelf.F.type.0ae = struct_value () [symbolic] -// CHECK:STDOUT: %.Self: %IF.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %IF.WithSelf.F.type.45b: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%.Self) [symbolic_self] -// CHECK:STDOUT: %IF.WithSelf.F.3d6: %IF.WithSelf.F.type.45b = struct_value () [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %IF.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %IF.WithSelf.F.type.df4: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%.Self.frozen) [symbolic_self] +// CHECK:STDOUT: %IF.WithSelf.F.682: %IF.WithSelf.F.type.df4 = struct_value () [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %IF.assoc_type: type = assoc_entity_type @IF [concrete] // CHECK:STDOUT: %assoc0: %IF.assoc_type = assoc_entity element0, imports.%Main.import_ref.e6e [concrete] -// CHECK:STDOUT: %IF.lookup_impl_witness: = lookup_impl_witness %.Self, @IF [symbolic_self] -// CHECK:STDOUT: %.eaa: type = fn_type_with_self_type %IF.WithSelf.F.type.45b, %.Self [symbolic_self] -// CHECK:STDOUT: %impl.elem0: %.eaa = impl_witness_access %IF.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %IF.lookup_impl_witness.1ee: = lookup_impl_witness %.Self.frozen, @IF [symbolic_self] +// CHECK:STDOUT: %.91d: type = fn_type_with_self_type %IF.WithSelf.F.type.df4, %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %impl.elem0.72b: %.91d = impl_witness_access %IF.lookup_impl_witness.1ee, element0 [symbolic_self] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %IF_where.type: type = facet_type <@IF where %impl.elem0 = %int_0> [concrete] +// CHECK:STDOUT: %.Self: %IF.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %IF.WithSelf.F.type.aed: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%.Self) [symbolic_self] +// CHECK:STDOUT: %.f1f: type = fn_type_with_self_type %IF.WithSelf.F.type.aed, %.Self [symbolic_self] +// CHECK:STDOUT: %IF.lookup_impl_witness.37f: = lookup_impl_witness %.Self, @IF [symbolic_self] +// CHECK:STDOUT: %impl.elem0.5d2: %.f1f = impl_witness_access %IF.lookup_impl_witness.37f, element0 [symbolic_self] +// CHECK:STDOUT: %IF_where.type: type = facet_type <@IF where %impl.elem0.5d2 = %int_0> [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] // CHECK:STDOUT: %IF.facet: %IF.type = facet_value %CD, (%IF.impl_witness) [concrete] -// CHECK:STDOUT: %IF.WithSelf.F.type.148: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%IF.facet) [concrete] -// CHECK:STDOUT: %IF.WithSelf.F.ef4: %IF.WithSelf.F.type.148 = struct_value () [concrete] +// CHECK:STDOUT: %IF.WithSelf.F.type.e8a: type = fn_type @IF.WithSelf.F, @IF.WithSelf(%IF.facet) [concrete] +// CHECK:STDOUT: %IF.WithSelf.F.1ba: %IF.WithSelf.F.type.e8a = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1699,16 +1834,20 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: impl_decl @CD.as.IF.impl [concrete] {} { // CHECK:STDOUT: %CD.ref: type = name_ref CD, file.%CD.decl [concrete = constants.%CD] // CHECK:STDOUT: %IF.ref: type = name_ref IF, imports.%Main.IF [concrete = constants.%IF.type] -// CHECK:STDOUT: %.Self: %IF.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %IF.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_21: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %IF.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IF.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %IF.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_21: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %F.ref: %IF.assoc_type = name_ref F, imports.%Main.import_ref.94e [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %.eaa = impl_witness_access constants.%IF.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_21.1: %.91d = impl_witness_access constants.%IF.lookup_impl_witness.1ee, element0 [symbolic_self = constants.%impl.elem0.72b] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] +// CHECK:STDOUT: %rewrite.loc10_24.1 = requirement_rewrite %impl.elem0.loc10_21.1, %int_0 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_21.2: %.f1f = impl_witness_access constants.%IF.lookup_impl_witness.37f, element0 [symbolic_self = constants.%impl.elem0.5d2] +// CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete] // CHECK:STDOUT: %.loc10_15: type = where_expr [concrete = constants.%IF_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %IF.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IF.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_24.2 = requirement_rewrite %impl.elem0.loc10_21.2, %int_0 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1763,18 +1902,20 @@ impl CD as IF where .F = 0 { // CHECK:STDOUT: // CHECK:STDOUT: specific @IF.WithSelf.F(constants.%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @IF.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @IF.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%.Self -// CHECK:STDOUT: %IF.WithSelf.F.type => constants.%IF.WithSelf.F.type.45b -// CHECK:STDOUT: %IF.WithSelf.F => constants.%IF.WithSelf.F.3d6 +// CHECK:STDOUT: %Self => constants.%.Self.frozen +// CHECK:STDOUT: %IF.WithSelf.F.type => constants.%IF.WithSelf.F.type.df4 +// CHECK:STDOUT: %IF.WithSelf.F => constants.%IF.WithSelf.F.682 // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: specific @IF.WithSelf(constants.%.Self) {} +// CHECK:STDOUT: // CHECK:STDOUT: specific @IF.WithSelf(constants.%IF.facet) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self => constants.%IF.facet -// CHECK:STDOUT: %IF.WithSelf.F.type => constants.%IF.WithSelf.F.type.148 -// CHECK:STDOUT: %IF.WithSelf.F => constants.%IF.WithSelf.F.ef4 +// CHECK:STDOUT: %IF.WithSelf.F.type => constants.%IF.WithSelf.F.type.e8a +// CHECK:STDOUT: %IF.WithSelf.F => constants.%IF.WithSelf.F.1ba // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @IF.WithSelf.F(constants.%IF.facet) {} diff --git a/toolchain/check/testdata/impl/import_self_specific.carbon b/toolchain/check/testdata/impl/import_self_specific.carbon index 5b12486016bb..9a9245a71113 100644 --- a/toolchain/check/testdata/impl/import_self_specific.carbon +++ b/toolchain/check/testdata/impl/import_self_specific.carbon @@ -68,7 +68,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete] // CHECK:STDOUT: %Self.765: %Y.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -123,7 +123,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc5_15.1 [symbolic = %T.loc5_15.2 (constants.%T)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] // CHECK:STDOUT: %.loc5_18.1: type = splice_block %.loc5_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc5_15.2 (constants.%T)] @@ -135,7 +135,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc9_15.1 [symbolic = %U.loc9_15.2 (constants.%U)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: %.loc9_18.1: type = splice_block %.loc9_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc9_15.1: type = symbolic_binding U, 0 [symbolic = %U.loc9_15.2 (constants.%U)] @@ -144,7 +144,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // 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: } { // CHECK:STDOUT: %.loc11: type = splice_block %Z.ref [concrete = constants.%Z.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc11_10.2: %Z.type = symbolic_binding V, 0 [symbolic = %V.loc11_10.1 (constants.%V)] @@ -356,7 +356,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.849: type = pattern_type %E [concrete] // CHECK:STDOUT: %N.patt: %pattern_type.849 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %N: %E = symbolic_binding N, 0 [symbolic] @@ -393,21 +393,24 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // 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: %.Self.9e9: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %I.WithSelf.F.type.d2b: type = fn_type @I.WithSelf.F, @I.WithSelf(%.Self.9e9) [symbolic_self] -// CHECK:STDOUT: %I.WithSelf.F.d34: %I.WithSelf.F.type.d2b = struct_value () [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.9e9 [symbolic_self] +// 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] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.3a0 [symbolic_self] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.d73 [concrete] -// CHECK:STDOUT: %I.lookup_impl_witness.a48: = lookup_impl_witness %.Self.9e9, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0.699: %Y.type = impl_witness_access %I.lookup_impl_witness.a48, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen.3a0, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f7a: %Y.type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %Y.impl_witness.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: %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: %I_where.type: type = facet_type <@I where %impl.elem0.699 = %Y.facet> [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.aef: %Y.type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] +// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0.aef = %Y.facet> [concrete] // CHECK:STDOUT: %I.impl_witness: = impl_witness @D.as.I.impl.%I.impl_witness_table, @D.as.I.impl(%N) [symbolic] // 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] @@ -419,8 +422,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %D.as.I.impl.F.type: type = fn_type @D.as.I.impl.F, @D.as.I.impl(%N) [symbolic] // CHECK:STDOUT: %D.as.I.impl.F: %D.as.I.impl.F.type = struct_value () [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %D, (%I.impl_witness) [symbolic] -// CHECK:STDOUT: %I.WithSelf.F.type.499: type = fn_type @I.WithSelf.F, @I.WithSelf(%I.facet) [symbolic] -// CHECK:STDOUT: %I.WithSelf.F.a7e: %I.WithSelf.F.type.499 = struct_value () [symbolic] +// CHECK:STDOUT: %I.WithSelf.F.type.fb3: type = fn_type @I.WithSelf.F, @I.WithSelf(%I.facet) [symbolic] +// CHECK:STDOUT: %I.WithSelf.F.c30: %I.WithSelf.F.type.fb3 = struct_value () [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -468,7 +471,7 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %N.patt.loc7_10.1: %pattern_type.849 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc7_10.2 (constants.%N.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %E.ref [concrete = constants.%E] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %E.ref: type = name_ref E, file.%E.decl [concrete = constants.%E] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc7_10.2: %E = symbolic_binding N, 0 [symbolic = %N.loc7_10.1 (constants.%N)] @@ -480,21 +483,25 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %N.ref: %E = name_ref N, %N.loc20_15.2 [symbolic = %N.loc20_15.1 (constants.%N)] // CHECK:STDOUT: %D.loc20_24.2: type = class_type @D, @D(constants.%N) [symbolic = %D.loc20_24.1 (constants.%D)] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc20_31: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.loc20_31 [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc20_37: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc20_31: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen.loc20_31 [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc20_37: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Assoc.ref: %I.assoc_type = name_ref Assoc, imports.%Main.import_ref.f32 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %Y.type = impl_witness_access constants.%I.lookup_impl_witness.a48, element0 [symbolic_self = constants.%impl.elem0.699] +// CHECK:STDOUT: %impl.elem0.loc20_37.1: %Y.type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.f7a] // CHECK:STDOUT: %.loc20_47.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %Y.facet: %Y.type = facet_value constants.%empty_tuple.type, (constants.%Y.impl_witness.2e8) [concrete = constants.%Y.facet] // CHECK:STDOUT: %.loc20_47.2: %Y.type = converted %.loc20_47.1, %Y.facet [concrete = constants.%Y.facet] +// CHECK:STDOUT: %rewrite.loc20_44.1 = requirement_rewrite %impl.elem0.loc20_37.1, %.loc20_47.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc20_37.2: %Y.type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.aef] +// CHECK:STDOUT: %rewrite.loc20_44.2 = requirement_rewrite %impl.elem0.loc20_37.2, %.loc20_47.2 [concrete] // CHECK:STDOUT: %.loc20_31: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc20_47.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc20_44.2 = requirement_rewrite %impl.elem0.loc20_37.2, %.loc20_47.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc20_18: type = splice_block %E.ref [concrete = constants.%E] { -// CHECK:STDOUT: %.Self.loc20_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc20_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %E.ref: type = name_ref E, file.%E.decl [concrete = constants.%E] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc20_15.2: %E = symbolic_binding N, 0 [symbolic = %N.loc20_15.1 (constants.%N)] @@ -719,11 +726,11 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: %c.patt => constants.%c.patt.2df // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.9e9) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen.3a0) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%.Self.9e9 -// CHECK:STDOUT: %I.WithSelf.F.type => constants.%I.WithSelf.F.type.d2b -// CHECK:STDOUT: %I.WithSelf.F => constants.%I.WithSelf.F.d34 +// CHECK:STDOUT: %Self => constants.%.Self.frozen.3a0 +// CHECK:STDOUT: %I.WithSelf.F.type => constants.%I.WithSelf.F.type.183 +// CHECK:STDOUT: %I.WithSelf.F => constants.%I.WithSelf.F.b1e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @T.as.Y.impl(constants.%T) { @@ -771,8 +778,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () { // CHECK:STDOUT: specific @I.WithSelf(constants.%I.facet) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %I.WithSelf.F.type => constants.%I.WithSelf.F.type.499 -// CHECK:STDOUT: %I.WithSelf.F => constants.%I.WithSelf.F.a7e +// CHECK:STDOUT: %I.WithSelf.F.type => constants.%I.WithSelf.F.type.fb3 +// CHECK:STDOUT: %I.WithSelf.F => constants.%I.WithSelf.F.c30 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I.WithSelf.F(constants.%I.facet) { diff --git a/toolchain/check/testdata/impl/import_thunk.carbon b/toolchain/check/testdata/impl/import_thunk.carbon index 3d5afe11e86a..69cf4e041a67 100644 --- a/toolchain/check/testdata/impl/import_thunk.carbon +++ b/toolchain/check/testdata/impl/import_thunk.carbon @@ -114,7 +114,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] @@ -195,7 +195,7 @@ fn G() { // CHECK:STDOUT: %X.patt.loc5_10.1: %pattern_type.cb1 = symbolic_binding_pattern X, 0 [symbolic = %X.patt.loc5_10.2 (constants.%X.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_14.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc5_14.3: type = converted %.loc5_14.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } @@ -209,7 +209,7 @@ fn G() { // CHECK:STDOUT: %C.loc7_25.2: type = class_type @C, @C(constants.%Y) [symbolic = %C.loc7_25.1 (constants.%C.6b1ed7.2)] // CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type] // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc7_19.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/import_use_generic.carbon b/toolchain/check/testdata/impl/import_use_generic.carbon index 083915072418..1a59a9d6feb5 100644 --- a/toolchain/check/testdata/impl/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/import_use_generic.carbon @@ -57,7 +57,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -89,7 +89,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %T.patt.loc4_10.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_13.1: type = splice_block %.loc4_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_10.1 (constants.%T)] @@ -103,7 +103,7 @@ fn H() -> C({}).(I.F)() {} // CHECK:STDOUT: %C.loc10_27.2: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.1 (constants.%C)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.loc10_18.1: type = splice_block %.loc10_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc10_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.1 (constants.%T)] diff --git a/toolchain/check/testdata/impl/incomplete.carbon b/toolchain/check/testdata/impl/incomplete.carbon index 3b7188f33445..9a3e5402fe0b 100644 --- a/toolchain/check/testdata/impl/incomplete.carbon +++ b/toolchain/check/testdata/impl/incomplete.carbon @@ -316,8 +316,8 @@ 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: %.Self: %J.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %J.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } @@ -332,29 +332,33 @@ interface B { // CHECK:STDOUT: impl_decl @C.as..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] -// CHECK:STDOUT: %.Self.loc13: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc13: %J.type = name_ref .Self, %.Self.loc13 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc13: type = facet_access_type %.Self.ref.loc13 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_19: type = converted %.Self.ref.loc13, %.Self.as_type.loc13 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc13: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc13 = requirement_base_facet_type %J.ref.loc13 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13: %J.type = name_ref .Self, %.Self.frozen.loc13 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc13: type = facet_access_type %.Self.ref.loc13 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_19: type = converted %.Self.ref.loc13, %.Self.as_type.loc13 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc13: = name_ref X, [concrete = ] // CHECK:STDOUT: %.loc13_25: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %rewrite.loc13 = requirement_rewrite %X.ref.loc13, [concrete] // CHECK:STDOUT: %.loc13_13: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %J.ref.loc13 -// CHECK:STDOUT: requirement_rewrite %X.ref.loc13, +// CHECK:STDOUT: %base_facet_type.loc13 = requirement_base_facet_type %J.ref.loc13 [concrete] +// CHECK:STDOUT: %rewrite.loc13 = requirement_rewrite %X.ref.loc13, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @C.as..impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref.loc22: type = name_ref J, file.%J.decl [concrete = constants.%J.type] -// CHECK:STDOUT: %.Self.loc22: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc22: %J.type = name_ref .Self, %.Self.loc22 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc22: type = facet_access_type %.Self.ref.loc22 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc22_19: type = converted %.Self.ref.loc22, %.Self.as_type.loc22 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc22: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc22 = requirement_base_facet_type %J.ref.loc22 [concrete] +// CHECK:STDOUT: %.Self.ref.loc22: %J.type = name_ref .Self, %.Self.frozen.loc22 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc22: type = facet_access_type %.Self.ref.loc22 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc22_19: type = converted %.Self.ref.loc22, %.Self.as_type.loc22 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X.ref.loc22: = name_ref X, [concrete = ] // CHECK:STDOUT: %.loc22_25: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %rewrite.loc22 = requirement_rewrite %X.ref.loc22, [concrete] // CHECK:STDOUT: %.loc22_13: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %J.ref.loc22 -// CHECK:STDOUT: requirement_rewrite %X.ref.loc22, +// CHECK:STDOUT: %base_facet_type.loc22 = requirement_base_facet_type %J.ref.loc22 [concrete] +// CHECK:STDOUT: %rewrite.loc22 = requirement_rewrite %X.ref.loc22, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -384,6 +388,8 @@ interface B { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Incomplete.type: type = facet_type <@Incomplete> [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: %.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] @@ -403,14 +409,21 @@ interface B { // 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] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_19.1: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete.type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc8_19.1: type = facet_access_type %.Self.ref.loc8_19.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_19.1: type = converted %.Self.ref.loc8_19.1, %.Self.as_type.loc8_19.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc8_25.1 = requirement_impls %.loc8_19.1, %Incomplete.ref [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc8_19.2: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc8_19.2: type = facet_access_type %.Self.ref.loc8_19.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc8_19.2: type = converted %.Self.ref.loc8_19.1, %.Self.as_type.loc8_19.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref [concrete] // CHECK:STDOUT: %.loc8_13: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_impls %.loc8_19, %Incomplete.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -466,13 +479,17 @@ interface B { // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.WithSelf.%T [concrete] // CHECK:STDOUT: %Incomplete.type: type = facet_type <@Incomplete> [concrete] -// CHECK:STDOUT: %.Self: %J.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %.Self, @J [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %J.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %J.lookup_impl_witness.cb1: = lookup_impl_witness %.Self.frozen, @J [symbolic_self] +// CHECK:STDOUT: %impl.elem0.221: type = impl_witness_access %J.lookup_impl_witness.cb1, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %J_where.type: type = facet_type <@J where .Self impls @Incomplete and %impl.elem0 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self: %J.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %J.lookup_impl_witness.df8: = lookup_impl_witness %.Self, @J [symbolic_self] +// CHECK:STDOUT: %impl.elem0.bbd: type = impl_witness_access %J.lookup_impl_witness.df8, element0 [symbolic_self] +// CHECK:STDOUT: %J_where.type: type = facet_type <@J where .Self impls @Incomplete and %impl.elem0.bbd = %empty_tuple.type> [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: } @@ -489,43 +506,63 @@ interface B { // CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref.loc8: type = name_ref J, file.%J.decl [concrete = constants.%J.type] -// CHECK:STDOUT: %.Self.loc8: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc8_19: %J.type = name_ref .Self, %.Self.loc8 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %J.ref.loc8 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_19.1: %J.type = name_ref .Self, %.Self.frozen.loc8 [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Incomplete.ref.loc8: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete.type] -// CHECK:STDOUT: %.Self.as_type.loc8_19: type = facet_access_type %.Self.ref.loc8_19 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_19: type = converted %.Self.ref.loc8_19, %.Self.as_type.loc8_19 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.Self.ref.loc8_46: %J.type = name_ref .Self, %.Self.loc8 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc8_46: type = facet_access_type %.Self.ref.loc8_46 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_46: type = converted %.Self.ref.loc8_46, %.Self.as_type.loc8_46 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc8_19.1: type = facet_access_type %.Self.ref.loc8_19.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_19.1: type = converted %.Self.ref.loc8_19.1, %.Self.as_type.loc8_19.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc8_25.1 = requirement_impls %.loc8_19.1, %Incomplete.ref.loc8 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_46: %J.type = name_ref .Self, %.Self.frozen.loc8 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc8_46: type = facet_access_type %.Self.ref.loc8_46 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_46: type = converted %.Self.ref.loc8_46, %.Self.as_type.loc8_46 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc8: %J.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc8: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc8_46.1: type = impl_witness_access constants.%J.lookup_impl_witness.cb1, element0 [symbolic_self = constants.%impl.elem0.221] // CHECK:STDOUT: %.loc8_52.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_52.2: type = converted %.loc8_52.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc8_49.1 = requirement_rewrite %impl.elem0.loc8_46.1, %.loc8_52.2 [concrete] +// CHECK:STDOUT: %.Self.loc8: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc8_19.2: %J.type = name_ref .Self, %.Self.loc8 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc8_19.2: type = facet_access_type %.Self.ref.loc8_19.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc8_19.2: type = converted %.Self.ref.loc8_19.1, %.Self.as_type.loc8_19.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref.loc8 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_46.2: type = impl_witness_access constants.%J.lookup_impl_witness.df8, element0 [symbolic_self = constants.%impl.elem0.bbd] +// CHECK:STDOUT: %rewrite.loc8_49.2 = requirement_rewrite %impl.elem0.loc8_46.2, %.loc8_52.2 [concrete] // CHECK:STDOUT: %.loc8_13: type = where_expr [concrete = constants.%J_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %J.ref.loc8 -// CHECK:STDOUT: requirement_impls %.loc8_19, %Incomplete.ref.loc8 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc8, %.loc8_52.2 +// CHECK:STDOUT: %base_facet_type.loc8 = requirement_base_facet_type %J.ref.loc8 [concrete] +// CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref.loc8 [concrete] +// CHECK:STDOUT: %rewrite.loc8_49.2 = requirement_rewrite %impl.elem0.loc8_46.2, %.loc8_52.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @C.as.J.impl [concrete] {} { // CHECK:STDOUT: %C.ref.loc10: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %J.ref.loc10: type = name_ref J, file.%J.decl [concrete = constants.%J.type] -// CHECK:STDOUT: %.Self.loc10: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref.loc10_19: %J.type = name_ref .Self, %.Self.loc10 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc10: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type.loc10 = requirement_base_facet_type %J.ref.loc10 [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_19.1: %J.type = name_ref .Self, %.Self.frozen.loc10 [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Incomplete.ref.loc10: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete.type] -// CHECK:STDOUT: %.Self.as_type.loc10_19: type = facet_access_type %.Self.ref.loc10_19 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_19: type = converted %.Self.ref.loc10_19, %.Self.as_type.loc10_19 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.Self.ref.loc10_46: %J.type = name_ref .Self, %.Self.loc10 [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type.loc10_46: type = facet_access_type %.Self.ref.loc10_46 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_46: type = converted %.Self.ref.loc10_46, %.Self.as_type.loc10_46 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc10_19.1: type = facet_access_type %.Self.ref.loc10_19.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_19.1: type = converted %.Self.ref.loc10_19.1, %.Self.as_type.loc10_19.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc10_25.1 = requirement_impls %.loc10_19.1, %Incomplete.ref.loc10 [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_46: %J.type = name_ref .Self, %.Self.frozen.loc10 [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type.loc10_46: type = facet_access_type %.Self.ref.loc10_46 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_46: type = converted %.Self.ref.loc10_46, %.Self.as_type.loc10_46 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref.loc10: %J.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc10: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_46.1: type = impl_witness_access constants.%J.lookup_impl_witness.cb1, element0 [symbolic_self = constants.%impl.elem0.221] // CHECK:STDOUT: %.loc10_52.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_52.2: type = converted %.loc10_52.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc10_49.1 = requirement_rewrite %impl.elem0.loc10_46.1, %.loc10_52.2 [concrete] +// CHECK:STDOUT: %.Self.loc10: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc10_19.2: %J.type = name_ref .Self, %.Self.loc10 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc10_19.2: type = facet_access_type %.Self.ref.loc10_19.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc10_19.2: type = converted %.Self.ref.loc10_19.1, %.Self.as_type.loc10_19.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc10_25.2 = requirement_impls %.loc10_19.2, %Incomplete.ref.loc10 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_46.2: type = impl_witness_access constants.%J.lookup_impl_witness.df8, element0 [symbolic_self = constants.%impl.elem0.bbd] +// CHECK:STDOUT: %rewrite.loc10_49.2 = requirement_rewrite %impl.elem0.loc10_46.2, %.loc10_52.2 [concrete] // CHECK:STDOUT: %.loc10_13: type = where_expr [concrete = constants.%J_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %J.ref.loc10 -// CHECK:STDOUT: requirement_impls %.loc10_19, %Incomplete.ref.loc10 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10, %.loc10_52.2 +// CHECK:STDOUT: %base_facet_type.loc10 = requirement_base_facet_type %J.ref.loc10 [concrete] +// CHECK:STDOUT: %impls.loc10_25.2 = requirement_impls %.loc10_19.2, %Incomplete.ref.loc10 [concrete] +// CHECK:STDOUT: %rewrite.loc10_49.2 = requirement_rewrite %impl.elem0.loc10_46.2, %.loc10_52.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -573,7 +610,7 @@ interface B { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @J.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -590,6 +627,8 @@ interface B { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Incomplete.type: type = facet_type <@Incomplete> [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: %.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] @@ -611,14 +650,21 @@ interface B { // 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] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_19.1: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete.type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_19: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc8_19.1: type = facet_access_type %.Self.ref.loc8_19.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_19.1: type = converted %.Self.ref.loc8_19.1, %.Self.as_type.loc8_19.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc8_25.1 = requirement_impls %.loc8_19.1, %Incomplete.ref [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc8_19.2: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc8_19.2: type = facet_access_type %.Self.ref.loc8_19.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc8_19.2: type = converted %.Self.ref.loc8_19.1, %.Self.as_type.loc8_19.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref [concrete] // CHECK:STDOUT: %.loc8_13: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_impls %.loc8_19, %Incomplete.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %impls.loc8_25.2 = requirement_impls %.loc8_19.2, %Incomplete.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -723,14 +769,17 @@ interface B { // CHECK:STDOUT: %assoc0: %X.assoc_type = assoc_entity element0, @X.WithSelf.%X1 [concrete] // CHECK:STDOUT: %Self.as_type.ace: type = facet_access_type %Self.b43 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.539: %X.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.539 [symbolic_self] -// CHECK:STDOUT: %X.lookup_impl_witness: = lookup_impl_witness %.Self.539, @X [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %X.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.5e5: %X.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.5e5 [symbolic_self] +// CHECK:STDOUT: %X.lookup_impl_witness.de0: = lookup_impl_witness %.Self.frozen.5e5, @X [symbolic_self] +// CHECK:STDOUT: %impl.elem0.2f1: type = impl_witness_access %X.lookup_impl_witness.de0, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %X_where.type: type = facet_type <@X where %impl.elem0 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.Self: %X.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %X.lookup_impl_witness.f28: = lookup_impl_witness %.Self, @X [symbolic_self] +// CHECK:STDOUT: %impl.elem0.061: type = impl_witness_access %X.lookup_impl_witness.f28, element0 [symbolic_self] +// CHECK:STDOUT: %X_where.type: type = facet_type <@X where %impl.elem0.061 = %empty_struct_type> [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %X_where.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %X_where.type = symbolic_binding T, 0 [symbolic] @@ -752,19 +801,23 @@ interface B { // CHECK:STDOUT: %T.patt.loc16_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_19.1: type = splice_block %.loc16_19.2 [concrete = constants.%X_where.type] { -// CHECK:STDOUT: %.Self.loc16_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc16_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X.type] -// CHECK:STDOUT: %.Self.loc16_19: %X.type = symbolic_binding .Self [symbolic_self = constants.%.Self.539] -// CHECK:STDOUT: %.Self.ref: %X.type = name_ref .Self, %.Self.loc16_19 [symbolic_self = constants.%.Self.539] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc16_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc16_19: %X.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.5e5] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %X.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %X.type = name_ref .Self, %.Self.frozen.loc16_19 [symbolic_self = constants.%.Self.frozen.5e5] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc16_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %X1.ref: %X.assoc_type = name_ref X1, @X1.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%X.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc16_25.1: type = impl_witness_access constants.%X.lookup_impl_witness.de0, element0 [symbolic_self = constants.%impl.elem0.2f1] // CHECK:STDOUT: %.loc16_32.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc16_32.2: type = converted %.loc16_32.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc16_29.1 = requirement_rewrite %impl.elem0.loc16_25.1, %.loc16_32.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc16_25.2: type = impl_witness_access constants.%X.lookup_impl_witness.f28, element0 [symbolic_self = constants.%impl.elem0.061] +// CHECK:STDOUT: %rewrite.loc16_29.2 = requirement_rewrite %impl.elem0.loc16_25.2, %.loc16_32.2 [concrete] // CHECK:STDOUT: %.loc16_19.2: type = where_expr [concrete = constants.%X_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %X.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc16_32.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %X.ref [concrete] +// CHECK:STDOUT: %rewrite.loc16_29.2 = requirement_rewrite %impl.elem0.loc16_25.2, %.loc16_32.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc16_14.2: %X_where.type = symbolic_binding T, 0 [symbolic = %T.loc16_14.1 (constants.%T)] @@ -875,7 +928,7 @@ interface B { // CHECK:STDOUT: %Self.as_type.loc12_11.2 => constants.%Self.as_type.ace // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @X.WithSelf(constants.%.Self.539) { +// CHECK:STDOUT: specific @X.WithSelf(constants.%.Self.frozen.5e5) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/interface_args.carbon b/toolchain/check/testdata/impl/interface_args.carbon index f45c5be37f33..7a2af72a5bd5 100644 --- a/toolchain/check/testdata/impl/interface_args.carbon +++ b/toolchain/check/testdata/impl/interface_args.carbon @@ -112,7 +112,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Dest.patt: %pattern_type.98f = symbolic_binding_pattern Dest, 0 [symbolic] // CHECK:STDOUT: %Dest: type = symbolic_binding Dest, 0 [symbolic] @@ -142,7 +142,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Dest.patt.loc3_26.1: %pattern_type.98f = symbolic_binding_pattern Dest, 0 [symbolic = %Dest.patt.loc3_26.2 (constants.%Dest.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_29.1: type = splice_block %.loc3_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %Dest.loc3_26.2: type = symbolic_binding Dest, 0 [symbolic = %Dest.loc3_26.1 (constants.%Dest)] @@ -237,7 +237,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -302,7 +302,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T.patt.loc4_19.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_22.1: type = splice_block %.loc4_22.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_22.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_19.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_19.1 (constants.%T)] @@ -931,7 +931,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1005,7 +1005,7 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %T.patt.loc4_20.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_20.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_23.1: type = splice_block %.loc4_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_20.1 (constants.%T)] diff --git a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon index cd9a3b0705eb..aab787d88e98 100644 --- a/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon +++ b/toolchain/check/testdata/impl/lookup/canonical_query_self.carbon @@ -72,7 +72,7 @@ fn G() { // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] // CHECK:STDOUT: %assoc0.7d8: %J.assoc_type = assoc_entity element0, @J.WithSelf.%J.WithSelf.JJ.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %BitAndWith.type.a06: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.a06 = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.type.802: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete] @@ -179,7 +179,7 @@ fn G() { // CHECK:STDOUT: %t.patt.loc22_18.1: @F.%pattern_type (%pattern_type.936) = at_binding_pattern t, %t.param_patt.loc22_18.1 [symbolic = %t.patt.loc22_18.2 (constants.%t.patt.088)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc22_12.1: type = splice_block %.loc22_12.3 [concrete = constants.%facet_type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref.loc22: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %J.ref.loc22: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %impl.elem0.loc22: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index 1c58efeba8c4..d505754c7aa5 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -143,7 +143,7 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] // CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.WithSelf.%HasF.WithSelf.F.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -198,7 +198,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_15.2 [symbolic = %T.loc8_15.1 (constants.%T)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] @@ -406,7 +406,7 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] // CHECK:STDOUT: %assoc0.a0c: %HasF.assoc_type = assoc_entity element0, @HasF.WithSelf.%HasF.WithSelf.F.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -492,7 +492,7 @@ fn G(x: A) { // CHECK:STDOUT: %ptr.loc8_25.2: type = ptr_type %T.ref [symbolic = %ptr.loc8_25.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T.67d)] @@ -772,7 +772,7 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] // CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.WithSelf.%HasF.WithSelf.F.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -830,7 +830,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc8_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_13.1: type = splice_block %.loc8_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_10.1 (constants.%T)] @@ -843,7 +843,7 @@ fn G(x: A) { // CHECK:STDOUT: %C.loc10_27.2: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.1 (constants.%C.1d0)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: %.loc10_18.1: type = splice_block %.loc10_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc10_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.1 (constants.%T)] @@ -1075,7 +1075,7 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1143,7 +1143,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_17.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_17.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_17.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_17.1 (constants.%T)] @@ -1157,7 +1157,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_15.2 [symbolic = %T.loc8_15.1 (constants.%T)] // CHECK:STDOUT: %HasF.type.loc8_36.2: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_36.1 (constants.%HasF.type.daf)] // CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] @@ -1412,7 +1412,7 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type @HasF [concrete] // CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.WithSelf.%HasF.WithSelf.F.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1456,12 +1456,12 @@ fn G(x: A) { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc12_15.2 [symbolic = %T.loc12_15.1 (constants.%T)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type] // CHECK:STDOUT: %.loc12_18.1: type = splice_block %.loc12_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc12_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc12_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.1 (constants.%T)] // CHECK:STDOUT: %.loc12_28.1: type = splice_block %.loc12_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc12_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc12_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc12_25.2: type = symbolic_binding U, 1 [symbolic = %U.loc12_25.1 (constants.%U)] @@ -1613,7 +1613,7 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1677,7 +1677,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_17.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_17.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_17.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_17.1 (constants.%T)] @@ -1690,7 +1690,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.ref.loc8_34: type = name_ref T, %T.loc8_15.2 [symbolic = %T.loc8_15.1 (constants.%T)] // CHECK:STDOUT: %HasF.type.loc8_35.2: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_35.1 (constants.%HasF.type.daf)] // CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] diff --git a/toolchain/check/testdata/impl/lookup/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/impl_forall.carbon index 6f192f39f377..560e9add73fa 100644 --- a/toolchain/check/testdata/impl/lookup/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/impl_forall.carbon @@ -46,7 +46,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %A.type: type = generic_class_type @A [concrete] @@ -164,7 +164,7 @@ fn TestSpecific(a: A({})*) -> {}* { // CHECK:STDOUT: %V.ref.loc12_34: type = name_ref V, %V.loc12_15.2 [symbolic = %V.loc12_15.1 (constants.%V.67d)] // CHECK:STDOUT: %I.type.loc12_35.2: type = facet_type <@I, @I(constants.%V.67d)> [symbolic = %I.type.loc12_35.1 (constants.%I.type.3fe556.2)] // CHECK:STDOUT: %.loc12_18.1: type = splice_block %.loc12_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc12_15.2: type = symbolic_binding V, 0 [symbolic = %V.loc12_15.1 (constants.%V.67d)] diff --git a/toolchain/check/testdata/impl/lookup/import.carbon b/toolchain/check/testdata/impl/lookup/import.carbon index 4b7cb056b113..573fc13d0503 100644 --- a/toolchain/check/testdata/impl/lookup/import.carbon +++ b/toolchain/check/testdata/impl/lookup/import.carbon @@ -1629,7 +1629,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1673,12 +1673,12 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %X.patt.loc4_27.1: @AnyParam.%pattern_type (%pattern_type.51d) = symbolic_binding_pattern X, 1 [symbolic = %X.patt.loc4_27.2 (constants.%X.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_20.1: type = splice_block %.loc4_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_17: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_17.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_17.1 (constants.%T)] // CHECK:STDOUT: %.loc4_30: type = splice_block %T.ref [symbolic = %T.loc4_17.1 (constants.%T)] { -// CHECK:STDOUT: %.Self.loc4_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_17.2 [symbolic = %T.loc4_17.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %X.loc4_27.2: @AnyParam.%T.loc4_17.1 (%T) = symbolic_binding X, 1 [symbolic = %X.loc4_27.1 (constants.%X)] @@ -1778,7 +1778,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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: %U: type = symbolic_binding U, 0 [symbolic] @@ -1869,7 +1869,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %U.patt.loc6_29.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_29.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_32.1: type = splice_block %.loc6_32.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_32.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc6_29.2: type = symbolic_binding U, 0 [symbolic = %U.loc6_29.1 (constants.%U)] @@ -2334,7 +2334,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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: %U: type = symbolic_binding U, 0 [symbolic] @@ -2424,7 +2424,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %U.patt.loc6_21.1: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_21.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_24.1: type = splice_block %.loc6_24.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_24.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc6_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc6_21.1 (constants.%U)] @@ -2888,7 +2888,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Extra8.type: type = facet_type <@Extra8> [concrete] // CHECK:STDOUT: %Self.345: %Extra8.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -2956,7 +2956,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %T.patt.loc13_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_13.1: type = splice_block %.loc13_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc13_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc13_10.1 (constants.%T)] 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 8304659b80db..b0260d22c702 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 @@ -104,7 +104,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %OuterParam.patt: %pattern_type.98f = symbolic_binding_pattern OuterParam, 0 [symbolic] // CHECK:STDOUT: %OuterParam: type = symbolic_binding OuterParam, 0 [symbolic] @@ -116,16 +116,19 @@ fn F() { // CHECK:STDOUT: %Self.b6d: %Y.type.d63 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Y.assoc_type.045: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %assoc0.bbd: %Y.assoc_type.045 = assoc_entity element0, @Y.WithSelf.%T [symbolic] -// CHECK:STDOUT: %.Self.1f2: %Y.type.d63 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.e31: %Y.type.d63 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Y.type.d63 [symbolic] -// CHECK:STDOUT: %.Self.as_type.88e: type = facet_access_type %.Self.1f2 [symbolic] -// CHECK:STDOUT: %Y.lookup_impl_witness.593: = lookup_impl_witness %.Self.1f2, @Y, @Y(%OuterParam) [symbolic] -// CHECK:STDOUT: %impl.elem0.231: type = impl_witness_access %Y.lookup_impl_witness.593, element0 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.2b2: type = facet_access_type %.Self.frozen.e31 [symbolic] +// CHECK:STDOUT: %Y.lookup_impl_witness.69a: = lookup_impl_witness %.Self.frozen.e31, @Y, @Y(%OuterParam) [symbolic] +// CHECK:STDOUT: %impl.elem0.093: type = impl_witness_access %Y.lookup_impl_witness.69a, element0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %Y_where.type.e36: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.231 = %empty_tuple.type> [symbolic] -// CHECK:STDOUT: %pattern_type.afd: type = pattern_type %Y_where.type.e36 [symbolic] -// CHECK:STDOUT: %H.patt.d84: %pattern_type.afd = symbolic_binding_pattern H, 1 [symbolic] -// CHECK:STDOUT: %H: %Y_where.type.e36 = symbolic_binding H, 1 [symbolic] +// CHECK:STDOUT: %.Self.12c: %Y.type.d63 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %Y.lookup_impl_witness.c77: = lookup_impl_witness %.Self.12c, @Y, @Y(%OuterParam) [symbolic] +// CHECK:STDOUT: %impl.elem0.35b: type = impl_witness_access %Y.lookup_impl_witness.c77, element0 [symbolic] +// CHECK:STDOUT: %Y_where.type.aab: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.35b = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %pattern_type.a2a: type = pattern_type %Y_where.type.aab [symbolic] +// CHECK:STDOUT: %H.patt.934: %pattern_type.a2a = symbolic_binding_pattern H, 1 [symbolic] +// CHECK:STDOUT: %H: %Y_where.type.aab = symbolic_binding H, 1 [symbolic] // CHECK:STDOUT: %Outer.G.type.744: type = fn_type @Outer.G, @Outer(%OuterParam) [symbolic] // CHECK:STDOUT: %Outer.G.2ce: %Outer.G.type.744 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -135,22 +138,25 @@ fn F() { // CHECK:STDOUT: %Y.type.1f7: type = facet_type <@Y, @Y(%empty_tuple.type)> [concrete] // CHECK:STDOUT: %Outer.G.type.c4d: type = fn_type @Outer.G, @Outer(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Outer.G.49b: %Outer.G.type.c4d = struct_value () [concrete] -// CHECK:STDOUT: %.Self.397: %Y.type.1f7 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.fb9: %Y.type.1f7 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Self.b11: %Y.type.1f7 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Y.assoc_type.46d: type = assoc_entity_type @Y, @Y(%empty_tuple.type) [concrete] // CHECK:STDOUT: %assoc0.a6e: %Y.assoc_type.46d = assoc_entity element0, @Y.WithSelf.%T [concrete] -// CHECK:STDOUT: %.Self.as_type.043: type = facet_access_type %.Self.397 [symbolic_self] -// CHECK:STDOUT: %Y.lookup_impl_witness.25a: = lookup_impl_witness %.Self.397, @Y, @Y(%empty_tuple.type) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.765: type = impl_witness_access %Y.lookup_impl_witness.25a, element0 [symbolic_self] -// CHECK:STDOUT: %Y_where.type.84c: type = facet_type <@Y, @Y(%empty_tuple.type) where %impl.elem0.765 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self.frozen.as_type.1ff: type = facet_access_type %.Self.frozen.fb9 [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.63b: = lookup_impl_witness %.Self.frozen.fb9, @Y, @Y(%empty_tuple.type) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.1cc: type = impl_witness_access %Y.lookup_impl_witness.63b, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.693: %Y.type.1f7 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.b55: = lookup_impl_witness %.Self.693, @Y, @Y(%empty_tuple.type) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.c92: type = impl_witness_access %Y.lookup_impl_witness.b55, element0 [symbolic_self] +// CHECK:STDOUT: %Y_where.type.7cc: type = facet_type <@Y, @Y(%empty_tuple.type) where %impl.elem0.c92 = %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] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %facet_value: %Y_where.type.84c = facet_value %C, (%Y.impl_witness) [concrete] +// CHECK:STDOUT: %facet_value: %Y_where.type.7cc = facet_value %C, (%Y.impl_witness) [concrete] // CHECK:STDOUT: %complete_type.002: = complete_type_witness %Y.type.1f7 [concrete] -// CHECK:STDOUT: %pattern_type.27b: type = pattern_type %Y_where.type.84c [concrete] -// CHECK:STDOUT: %H.patt.5a1: %pattern_type.27b = symbolic_binding_pattern H, 1 [symbolic] +// CHECK:STDOUT: %pattern_type.42f: type = pattern_type %Y_where.type.7cc [concrete] +// CHECK:STDOUT: %H.patt.9c6: %pattern_type.42f = symbolic_binding_pattern H, 1 [symbolic] // CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %Outer.G.49b, @Outer.G(%empty_tuple.type, %facet_value) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -173,7 +179,7 @@ fn F() { // CHECK:STDOUT: %OuterParam.patt.loc49_23.1: %pattern_type.98f = symbolic_binding_pattern OuterParam, 0 [symbolic = %OuterParam.patt.loc49_23.2 (constants.%OuterParam.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc49_26.1: type = splice_block %.loc49_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc49_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %OuterParam.loc49_23.2: type = symbolic_binding OuterParam, 0 [symbolic = %OuterParam.loc49_23.1 (constants.%OuterParam)] @@ -187,18 +193,22 @@ fn F() { // CHECK:STDOUT: %Outer: type = class_type @Outer, @Outer(constants.%empty_tuple.type) [concrete = constants.%Outer.9cf] // CHECK:STDOUT: %.loc58_20: type = specific_constant @Outer.%Y.decl, @Outer(constants.%empty_tuple.type) [concrete = constants.%Y.type.1f7] // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc58_20 [concrete = constants.%Y.type.1f7] -// CHECK:STDOUT: %.Self: %Y.type.1f7 = symbolic_binding .Self [symbolic_self = constants.%.Self.397] -// CHECK:STDOUT: %.Self.ref: %Y.type.1f7 = name_ref .Self, %.Self [symbolic_self = constants.%.Self.397] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type.043] -// CHECK:STDOUT: %.loc58_29.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type.043] -// CHECK:STDOUT: %.loc58_29.2: %Y.assoc_type.46d = specific_constant @T.%assoc0, @Y.WithSelf(constants.%empty_tuple.type, constants.%.Self.397) [concrete = constants.%assoc0.a6e] +// CHECK:STDOUT: %.Self.frozen: %Y.type.1f7 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.fb9] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %Y.type.1f7 = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.fb9] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type.1ff] +// CHECK:STDOUT: %.loc58_29.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.1ff] +// CHECK:STDOUT: %.loc58_29.2: %Y.assoc_type.46d = specific_constant @T.%assoc0, @Y.WithSelf(constants.%empty_tuple.type, constants.%.Self.frozen.fb9) [concrete = constants.%assoc0.a6e] // CHECK:STDOUT: %T.ref: %Y.assoc_type.46d = name_ref T, %.loc58_29.2 [concrete = constants.%assoc0.a6e] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness.25a, element0 [symbolic_self = constants.%impl.elem0.765] +// CHECK:STDOUT: %impl.elem0.loc58_29.1: type = impl_witness_access constants.%Y.lookup_impl_witness.63b, element0 [symbolic_self = constants.%impl.elem0.1cc] // CHECK:STDOUT: %.loc58_35.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc58_35.2: type = converted %.loc58_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc58_23: type = where_expr [concrete = constants.%Y_where.type.84c] { -// CHECK:STDOUT: requirement_base_facet_type %Y.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc58_35.2 +// CHECK:STDOUT: %rewrite.loc58_32.1 = requirement_rewrite %impl.elem0.loc58_29.1, %.loc58_35.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc58_29.2: type = impl_witness_access constants.%Y.lookup_impl_witness.b55, element0 [symbolic_self = constants.%impl.elem0.c92] +// CHECK:STDOUT: %rewrite.loc58_32.2 = requirement_rewrite %impl.elem0.loc58_29.2, %.loc58_35.2 [concrete] +// CHECK:STDOUT: %.loc58_23: type = where_expr [concrete = constants.%Y_where.type.7cc] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %rewrite.loc58_32.2 = requirement_rewrite %impl.elem0.loc58_29.2, %.loc58_35.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} @@ -252,27 +262,31 @@ fn F() { // CHECK:STDOUT: class { // CHECK:STDOUT: %Y.decl: type = interface_decl @Y [symbolic = @Outer.%Y.type (constants.%Y.type.d63)] {} {} // CHECK:STDOUT: %Outer.G.decl: @Outer.%Outer.G.type (%Outer.G.type.744) = fn_decl @Outer.G [symbolic = @Outer.%Outer.G (constants.%Outer.G.2ce)] { -// CHECK:STDOUT: %H.patt.loc54_16.1: @Outer.G.%pattern_type (%pattern_type.afd) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc54_16.2 (constants.%H.patt.d84)] +// CHECK:STDOUT: %H.patt.loc54_16.1: @Outer.G.%pattern_type (%pattern_type.a2a) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc54_16.2 (constants.%H.patt.934)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc54_21.1: type = splice_block %.loc54_21.2 [symbolic = %Y_where.type (constants.%Y_where.type.e36)] { -// CHECK:STDOUT: %.Self.loc54_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc54_21.1: type = splice_block %.loc54_21.2 [symbolic = %Y_where.type (constants.%Y_where.type.aab)] { +// CHECK:STDOUT: %.Self.frozen.loc54_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc54_19: type = specific_constant @Outer.%Y.decl, @Outer(constants.%OuterParam) [symbolic = %Y.type (constants.%Y.type.d63)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc54_19 [symbolic = %Y.type (constants.%Y.type.d63)] -// CHECK:STDOUT: %.Self.loc54_21.2: @Outer.G.%Y.type (%Y.type.d63) = symbolic_binding .Self [symbolic = %.Self.loc54_21.1 (constants.%.Self.1f2)] -// CHECK:STDOUT: %.Self.ref: @Outer.G.%Y.type (%Y.type.d63) = name_ref .Self, %.Self.loc54_21.2 [symbolic = %.Self.loc54_21.1 (constants.%.Self.1f2)] -// CHECK:STDOUT: %.Self.as_type.loc54_27.2: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc54_27.1 (constants.%.Self.as_type.88e)] -// CHECK:STDOUT: %.loc54_27.1: type = converted %.Self.ref, %.Self.as_type.loc54_27.2 [symbolic = %.Self.as_type.loc54_27.1 (constants.%.Self.as_type.88e)] -// CHECK:STDOUT: %.loc54_27.2: @Outer.G.%Y.assoc_type (%Y.assoc_type.045) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.1f2) [symbolic = %assoc0 (constants.%assoc0.bbd)] +// CHECK:STDOUT: %.Self.frozen.loc54_21.2: @Outer.G.%Y.type (%Y.type.d63) = symbolic_binding .Self [symbolic = %.Self.frozen.loc54_21.1 (constants.%.Self.frozen.e31)] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %.Self.ref: @Outer.G.%Y.type (%Y.type.d63) = name_ref .Self, %.Self.frozen.loc54_21.2 [symbolic = %.Self.frozen.loc54_21.1 (constants.%.Self.frozen.e31)] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.2b2)] +// CHECK:STDOUT: %.loc54_27.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.2b2)] +// CHECK:STDOUT: %.loc54_27.2: @Outer.G.%Y.assoc_type (%Y.assoc_type.045) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.e31) [symbolic = %assoc0 (constants.%assoc0.bbd)] // CHECK:STDOUT: %T.ref: @Outer.G.%Y.assoc_type (%Y.assoc_type.045) = name_ref T, %.loc54_27.2 [symbolic = %assoc0 (constants.%assoc0.bbd)] -// CHECK:STDOUT: %impl.elem0.loc54_27.2: type = impl_witness_access constants.%Y.lookup_impl_witness.593, element0 [symbolic = %impl.elem0.loc54_27.1 (constants.%impl.elem0.231)] +// CHECK:STDOUT: %impl.elem0.loc54_27.3: type = impl_witness_access constants.%Y.lookup_impl_witness.69a, element0 [symbolic = %impl.elem0.loc54_27.1 (constants.%impl.elem0.093)] // CHECK:STDOUT: %.loc54_33.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc54_33.2: type = converted %.loc54_33.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc54_21.2: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.e36)] { -// CHECK:STDOUT: requirement_base_facet_type %Y.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc54_27.2, %.loc54_33.2 +// CHECK:STDOUT: %rewrite.loc54_30.1 = requirement_rewrite %impl.elem0.loc54_27.3, %.loc54_33.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc54_27.4: type = impl_witness_access constants.%Y.lookup_impl_witness.c77, element0 [symbolic = %impl.elem0.loc54_27.2 (constants.%impl.elem0.35b)] +// CHECK:STDOUT: %rewrite.loc54_30.2 = requirement_rewrite %impl.elem0.loc54_27.4, %.loc54_33.2 [concrete] +// CHECK:STDOUT: %.loc54_21.2: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.aab)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %rewrite.loc54_30.2 = requirement_rewrite %impl.elem0.loc54_27.4, %.loc54_33.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %H.loc54_16.2: @Outer.G.%Y_where.type (%Y_where.type.e36) = symbolic_binding H, 1 [symbolic = %H.loc54_16.1 (constants.%H)] +// CHECK:STDOUT: %H.loc54_16.2: @Outer.G.%Y_where.type (%Y_where.type.aab) = symbolic_binding H, 1 [symbolic = %H.loc54_16.1 (constants.%H)] // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -286,20 +300,23 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: class @C; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Outer.G(@Outer.%OuterParam.loc49_23.2: type, %H.loc54_16.2: @Outer.G.%Y_where.type (%Y_where.type.e36)) { +// CHECK:STDOUT: generic fn @Outer.G(@Outer.%OuterParam.loc49_23.2: type, %H.loc54_16.2: @Outer.G.%Y_where.type (%Y_where.type.aab)) { // CHECK:STDOUT: %OuterParam: type = symbolic_binding OuterParam, 0 [symbolic = %OuterParam (constants.%OuterParam)] // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.d63)] -// CHECK:STDOUT: %.Self.loc54_21.1: @Outer.G.%Y.type (%Y.type.d63) = symbolic_binding .Self [symbolic = %.Self.loc54_21.1 (constants.%.Self.1f2)] +// CHECK:STDOUT: %.Self.frozen.loc54_21.1: @Outer.G.%Y.type (%Y.type.d63) = symbolic_binding .Self [symbolic = %.Self.frozen.loc54_21.1 (constants.%.Self.frozen.e31)] // CHECK:STDOUT: %require_complete: = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %.Self.as_type.loc54_27.1: type = facet_access_type %.Self.loc54_21.1 [symbolic = %.Self.as_type.loc54_27.1 (constants.%.Self.as_type.88e)] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc54_21.1 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.2b2)] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.045)] // CHECK:STDOUT: %assoc0: @Outer.G.%Y.assoc_type (%Y.assoc_type.045) = assoc_entity element0, @Y.WithSelf.%T [symbolic = %assoc0 (constants.%assoc0.bbd)] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self.loc54_21.1, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.593)] -// CHECK:STDOUT: %impl.elem0.loc54_27.1: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc54_27.1 (constants.%impl.elem0.231)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc54_27.1 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.e36)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Y_where.type [symbolic = %pattern_type (constants.%pattern_type.afd)] -// CHECK:STDOUT: %H.patt.loc54_16.2: @Outer.G.%pattern_type (%pattern_type.afd) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc54_16.2 (constants.%H.patt.d84)] -// CHECK:STDOUT: %H.loc54_16.1: @Outer.G.%Y_where.type (%Y_where.type.e36) = symbolic_binding H, 1 [symbolic = %H.loc54_16.1 (constants.%H)] +// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_27.1: = lookup_impl_witness %.Self.frozen.loc54_21.1, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc54_27.1 (constants.%Y.lookup_impl_witness.69a)] +// CHECK:STDOUT: %impl.elem0.loc54_27.1: type = impl_witness_access %Y.lookup_impl_witness.loc54_27.1, element0 [symbolic = %impl.elem0.loc54_27.1 (constants.%impl.elem0.093)] +// CHECK:STDOUT: %.Self: @Outer.G.%Y.type (%Y.type.d63) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.12c)] +// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_27.2: = lookup_impl_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc54_27.2 (constants.%Y.lookup_impl_witness.c77)] +// CHECK:STDOUT: %impl.elem0.loc54_27.2: type = impl_witness_access %Y.lookup_impl_witness.loc54_27.2, element0 [symbolic = %impl.elem0.loc54_27.2 (constants.%impl.elem0.35b)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc54_27.2 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.aab)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Y_where.type [symbolic = %pattern_type (constants.%pattern_type.a2a)] +// CHECK:STDOUT: %H.patt.loc54_16.2: @Outer.G.%pattern_type (%pattern_type.a2a) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc54_16.2 (constants.%H.patt.934)] +// CHECK:STDOUT: %H.loc54_16.1: @Outer.G.%Y_where.type (%Y_where.type.aab) = symbolic_binding H, 1 [symbolic = %H.loc54_16.1 (constants.%H)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -320,8 +337,8 @@ fn F() { // CHECK:STDOUT: %.loc61_12: %Outer.G.type.c4d = specific_constant @Outer.%Outer.G.decl, @Outer(constants.%empty_tuple.type) [concrete = constants.%Outer.G.49b] // CHECK:STDOUT: %G.ref: %Outer.G.type.c4d = name_ref G, %.loc61_12 [concrete = constants.%Outer.G.49b] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %facet_value: %Y_where.type.84c = facet_value constants.%C, (constants.%Y.impl_witness) [concrete = constants.%facet_value] -// CHECK:STDOUT: %.loc61_16: %Y_where.type.84c = converted constants.%C, %facet_value [concrete = constants.%facet_value] +// CHECK:STDOUT: %facet_value: %Y_where.type.7cc = facet_value constants.%C, (constants.%Y.impl_witness) [concrete = constants.%facet_value] +// CHECK:STDOUT: %.loc61_16: %Y_where.type.7cc = converted constants.%C, %facet_value [concrete = constants.%facet_value] // CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %G.ref, @Outer.G(constants.%empty_tuple.type, constants.%facet_value) [concrete = constants.%Outer.G.specific_fn] // CHECK:STDOUT: %Outer.G.call: init %empty_tuple.type = call %Outer.G.specific_fn() // CHECK:STDOUT: return @@ -353,7 +370,7 @@ fn F() { // CHECK:STDOUT: %assoc0 => constants.%assoc0.bbd // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Y.WithSelf(constants.%OuterParam, constants.%.Self.1f2) { +// CHECK:STDOUT: specific @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.e31) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.045 @@ -363,16 +380,19 @@ fn F() { // CHECK:STDOUT: specific @Outer.G(constants.%OuterParam, constants.%H) { // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.type => constants.%Y.type.d63 -// CHECK:STDOUT: %.Self.loc54_21.1 => constants.%.Self.1f2 +// CHECK:STDOUT: %.Self.frozen.loc54_21.1 => constants.%.Self.frozen.e31 // CHECK:STDOUT: %require_complete => constants.%require_complete -// CHECK:STDOUT: %.Self.as_type.loc54_27.1 => constants.%.Self.as_type.88e +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.2b2 // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.045 // CHECK:STDOUT: %assoc0 => constants.%assoc0.bbd -// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.593 -// CHECK:STDOUT: %impl.elem0.loc54_27.1 => constants.%impl.elem0.231 -// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.e36 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.afd -// CHECK:STDOUT: %H.patt.loc54_16.2 => constants.%H.patt.d84 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_27.1 => constants.%Y.lookup_impl_witness.69a +// CHECK:STDOUT: %impl.elem0.loc54_27.1 => constants.%impl.elem0.093 +// CHECK:STDOUT: %.Self => constants.%.Self.12c +// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_27.2 => constants.%Y.lookup_impl_witness.c77 +// CHECK:STDOUT: %impl.elem0.loc54_27.2 => constants.%impl.elem0.35b +// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.aab +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.a2a +// CHECK:STDOUT: %H.patt.loc54_16.2 => constants.%H.patt.934 // CHECK:STDOUT: %H.loc54_16.1 => constants.%H // CHECK:STDOUT: } // CHECK:STDOUT: @@ -400,7 +420,7 @@ fn F() { // CHECK:STDOUT: %assoc0 => constants.%assoc0.a6e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Y.WithSelf(constants.%empty_tuple.type, constants.%.Self.397) { +// CHECK:STDOUT: specific @Y.WithSelf(constants.%empty_tuple.type, constants.%.Self.frozen.fb9) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %OuterParam => constants.%empty_tuple.type // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.46d @@ -417,16 +437,19 @@ fn F() { // CHECK:STDOUT: specific @Outer.G(constants.%empty_tuple.type, constants.%facet_value) { // CHECK:STDOUT: %OuterParam => constants.%empty_tuple.type // CHECK:STDOUT: %Y.type => constants.%Y.type.1f7 -// CHECK:STDOUT: %.Self.loc54_21.1 => constants.%.Self.397 +// CHECK:STDOUT: %.Self.frozen.loc54_21.1 => constants.%.Self.frozen.fb9 // CHECK:STDOUT: %require_complete => constants.%complete_type.002 -// CHECK:STDOUT: %.Self.as_type.loc54_27.1 => constants.%.Self.as_type.043 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.1ff // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.46d // CHECK:STDOUT: %assoc0 => constants.%assoc0.a6e -// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.25a -// CHECK:STDOUT: %impl.elem0.loc54_27.1 => constants.%impl.elem0.765 -// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.84c -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.27b -// CHECK:STDOUT: %H.patt.loc54_16.2 => constants.%H.patt.5a1 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_27.1 => constants.%Y.lookup_impl_witness.63b +// CHECK:STDOUT: %impl.elem0.loc54_27.1 => constants.%impl.elem0.1cc +// CHECK:STDOUT: %.Self => constants.%.Self.693 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_27.2 => constants.%Y.lookup_impl_witness.b55 +// CHECK:STDOUT: %impl.elem0.loc54_27.2 => constants.%impl.elem0.c92 +// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.7cc +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.42f +// CHECK:STDOUT: %H.patt.loc54_16.2 => constants.%H.patt.9c6 // CHECK:STDOUT: %H.loc54_16.1 => constants.%facet_value // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -440,7 +463,7 @@ fn F() { // CHECK:STDOUT: %Z2.type: type = facet_type <@Z2> [concrete] // CHECK:STDOUT: %Self.5ad: %Z2.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.f4f: type = pattern_type %Z1.type [concrete] // CHECK:STDOUT: %OuterParam.patt: %pattern_type.f4f = symbolic_binding_pattern OuterParam, 0 [symbolic] // CHECK:STDOUT: %OuterParam: %Z1.type = symbolic_binding OuterParam, 0 [symbolic] @@ -452,22 +475,25 @@ fn F() { // CHECK:STDOUT: %Self.b90: %Y.type.6da = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Y.assoc_type.9e3: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %assoc0.c2d: %Y.assoc_type.9e3 = assoc_entity element0, @Y.WithSelf.%T [symbolic] -// CHECK:STDOUT: %.Self.566: %Y.type.6da = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.3ed: %Y.type.6da = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %require_complete.ab6: = require_complete_type %Y.type.6da [symbolic] -// CHECK:STDOUT: %.Self.as_type.eab: type = facet_access_type %.Self.566 [symbolic] -// CHECK:STDOUT: %Y.lookup_impl_witness.775: = lookup_impl_witness %.Self.566, @Y, @Y(%OuterParam) [symbolic] -// CHECK:STDOUT: %impl.elem0.231: type = impl_witness_access %Y.lookup_impl_witness.775, element0 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.b76: type = facet_access_type %.Self.frozen.3ed [symbolic] +// CHECK:STDOUT: %Y.lookup_impl_witness.9ce: = lookup_impl_witness %.Self.frozen.3ed, @Y, @Y(%OuterParam) [symbolic] +// CHECK:STDOUT: %impl.elem0.c34: type = impl_witness_access %Y.lookup_impl_witness.9ce, element0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %Y_where.type.9b0: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.231 = %empty_tuple.type> [symbolic] -// CHECK:STDOUT: %pattern_type.68e: type = pattern_type %Y_where.type.9b0 [symbolic] -// CHECK:STDOUT: %H.patt.a60: %pattern_type.68e = symbolic_binding_pattern H, 1 [symbolic] -// CHECK:STDOUT: %H: %Y_where.type.9b0 = symbolic_binding H, 1 [symbolic] +// CHECK:STDOUT: %.Self.b74: %Y.type.6da = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %Y.lookup_impl_witness.75a: = lookup_impl_witness %.Self.b74, @Y, @Y(%OuterParam) [symbolic] +// CHECK:STDOUT: %impl.elem0.5e0: type = impl_witness_access %Y.lookup_impl_witness.75a, element0 [symbolic] +// CHECK:STDOUT: %Y_where.type.883: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.5e0 = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %pattern_type.a5e: type = pattern_type %Y_where.type.883 [symbolic] +// CHECK:STDOUT: %H.patt.7f4: %pattern_type.a5e = symbolic_binding_pattern H, 1 [symbolic] +// CHECK:STDOUT: %H: %Y_where.type.883 = symbolic_binding H, 1 [symbolic] // CHECK:STDOUT: %Outer.G.type.2cf: type = fn_type @Outer.G, @Outer(%OuterParam) [symbolic] // CHECK:STDOUT: %Outer.G.f56: %Outer.G.type.2cf = struct_value () [symbolic] // CHECK:STDOUT: %C.147: type = class_type @C, @C(%OuterParam) [symbolic] -// CHECK:STDOUT: %Y.impl_witness.94f: = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic] -// CHECK:STDOUT: %require_complete.9ed: = require_complete_type %Y_where.type.9b0 [symbolic] -// CHECK:STDOUT: %Y.facet.93f: %Y.type.6da = facet_value %C.147, (%Y.impl_witness.94f) [symbolic] +// CHECK:STDOUT: %Y.impl_witness.c9b: = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%OuterParam) [symbolic] +// CHECK:STDOUT: %require_complete.56f: = require_complete_type %Y_where.type.883 [symbolic] +// CHECK:STDOUT: %Y.facet.798: %Y.type.6da = facet_value %C.147, (%Y.impl_witness.c9b) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Z1.impl_witness: = impl_witness @empty_tuple.type.as.Z1.impl.%Z1.impl_witness_table [concrete] @@ -493,21 +519,24 @@ fn F() { // CHECK:STDOUT: %Outer.G.type.8ce: type = fn_type @Outer.G, @Outer(%Z1.facet) [concrete] // CHECK:STDOUT: %Outer.G.20a: %Outer.G.type.8ce = struct_value () [concrete] // CHECK:STDOUT: %C.5e2: type = class_type @C, @C(%Z1.facet) [concrete] -// CHECK:STDOUT: %.Self.42f: %Y.type.b7c = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Y.lookup_impl_witness.e27: = lookup_impl_witness %.Self.42f, @Y, @Y(%Z1.facet) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.801: type = impl_witness_access %Y.lookup_impl_witness.e27, element0 [symbolic_self] -// CHECK:STDOUT: %Y_where.type.948: type = facet_type <@Y, @Y(%Z1.facet) where %impl.elem0.801 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self.b06: %Y.type.b7c = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.d61: = lookup_impl_witness %.Self.b06, @Y, @Y(%Z1.facet) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.400: type = impl_witness_access %Y.lookup_impl_witness.d61, element0 [symbolic_self] +// CHECK:STDOUT: %Y_where.type.8eb: type = facet_type <@Y, @Y(%Z1.facet) where %impl.elem0.400 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self.frozen.70d: %Y.type.b7c = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Self.0e0: %Y.type.b7c = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Y.assoc_type.d53: type = assoc_entity_type @Y, @Y(%Z1.facet) [concrete] // CHECK:STDOUT: %assoc0.ef6: %Y.assoc_type.d53 = assoc_entity element0, @Y.WithSelf.%T [concrete] // CHECK:STDOUT: %complete_type.c4c: = complete_type_witness %Y.type.b7c [concrete] -// CHECK:STDOUT: %.Self.as_type.579: type = facet_access_type %.Self.42f [symbolic_self] -// CHECK:STDOUT: %Y.impl_witness.056: = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%Z1.facet) [concrete] -// CHECK:STDOUT: %complete_type.8f5: = complete_type_witness %Y_where.type.948 [concrete] -// CHECK:STDOUT: %facet_value.1c3: %Y_where.type.948 = facet_value %C.5e2, (%Y.impl_witness.056) [concrete] -// CHECK:STDOUT: %pattern_type.4ae: type = pattern_type %Y_where.type.948 [concrete] -// CHECK:STDOUT: %H.patt.a2a: %pattern_type.4ae = symbolic_binding_pattern H, 1 [symbolic] -// CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %Outer.G.20a, @Outer.G(%Z1.facet, %facet_value.1c3) [concrete] +// CHECK:STDOUT: %.Self.frozen.as_type.1e5: type = facet_access_type %.Self.frozen.70d [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.fb3: = lookup_impl_witness %.Self.frozen.70d, @Y, @Y(%Z1.facet) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.73b: type = impl_witness_access %Y.lookup_impl_witness.fb3, element0 [symbolic_self] +// CHECK:STDOUT: %Y.impl_witness.82a: = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%Z1.facet) [concrete] +// CHECK:STDOUT: %complete_type.d76: = complete_type_witness %Y_where.type.8eb [concrete] +// CHECK:STDOUT: %facet_value.58a: %Y_where.type.8eb = facet_value %C.5e2, (%Y.impl_witness.82a) [concrete] +// CHECK:STDOUT: %pattern_type.692: type = pattern_type %Y_where.type.8eb [concrete] +// CHECK:STDOUT: %H.patt.a46: %pattern_type.692 = symbolic_binding_pattern H, 1 [symbolic] +// CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %Outer.G.20a, @Outer.G(%Z1.facet, %facet_value.58a) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -536,7 +565,7 @@ fn F() { // CHECK:STDOUT: %OuterParam.patt.loc6_23.1: %pattern_type.f4f = symbolic_binding_pattern OuterParam, 0 [symbolic = %OuterParam.patt.loc6_23.2 (constants.%OuterParam.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %Z1.ref [concrete = constants.%Z1.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %Z1.ref: type = name_ref Z1, file.%Z1.decl [concrete = constants.%Z1.type] // CHECK:STDOUT: } // CHECK:STDOUT: %OuterParam.loc6_23.2: %Z1.type = symbolic_binding OuterParam, 0 [symbolic = %OuterParam.loc6_23.1 (constants.%OuterParam)] @@ -610,22 +639,25 @@ fn F() { // CHECK:STDOUT: %OuterParam: %Z1.type = symbolic_binding OuterParam, 0 [symbolic = %OuterParam (constants.%OuterParam)] // CHECK:STDOUT: %C: type = class_type @C, @C(%OuterParam) [symbolic = %C (constants.%C.147)] // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.6da)] -// CHECK:STDOUT: %.Self.loc14_15.2: @C.as.Y.impl.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.loc14_15.2 (constants.%.Self.566)] +// CHECK:STDOUT: %.Self.frozen.loc14_15.2: @C.as.Y.impl.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.frozen.loc14_15.2 (constants.%.Self.frozen.3ed)] // CHECK:STDOUT: %require_complete.loc14_21: = require_complete_type %Y.type [symbolic = %require_complete.loc14_21 (constants.%require_complete.ab6)] -// CHECK:STDOUT: %.Self.as_type.loc14_21.2: type = facet_access_type %.Self.loc14_15.2 [symbolic = %.Self.as_type.loc14_21.2 (constants.%.Self.as_type.eab)] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc14_15.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.9e3)] // CHECK:STDOUT: %assoc0: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.9e3) = assoc_entity element0, @Y.WithSelf.%T [symbolic = %assoc0 (constants.%assoc0.c2d)] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self.loc14_15.2, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.775)] -// CHECK:STDOUT: %impl.elem0.loc14_21.2: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_21.2 (constants.%impl.elem0.231)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc14_21.2 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.9b0)] -// 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.94f)] +// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.1: = lookup_impl_witness %.Self.frozen.loc14_15.2, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc14_21.1 (constants.%Y.lookup_impl_witness.9ce)] +// CHECK:STDOUT: %impl.elem0.loc14_21.3: type = impl_witness_access %Y.lookup_impl_witness.loc14_21.1, element0 [symbolic = %impl.elem0.loc14_21.3 (constants.%impl.elem0.c34)] +// CHECK:STDOUT: %.Self: @C.as.Y.impl.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.b74)] +// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.2: = lookup_impl_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc14_21.2 (constants.%Y.lookup_impl_witness.75a)] +// CHECK:STDOUT: %impl.elem0.loc14_21.4: type = impl_witness_access %Y.lookup_impl_witness.loc14_21.2, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.5e0)] +// 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.883)] +// 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.c9b)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc14_15: = require_complete_type %Y_where.type [symbolic = %require_complete.loc14_15 (constants.%require_complete.9ed)] +// CHECK:STDOUT: %require_complete.loc14_15: = require_complete_type %Y_where.type [symbolic = %require_complete.loc14_15 (constants.%require_complete.56f)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %.loc14_15 { // CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.Y.impl [concrete] -// CHECK:STDOUT: %Y.impl_witness.loc14_29.1: = impl_witness %Y.impl_witness_table, @C.as.Y.impl(constants.%OuterParam) [symbolic = %Y.impl_witness.loc14_29.2 (constants.%Y.impl_witness.94f)] +// CHECK:STDOUT: %Y.impl_witness.loc14_29.1: = impl_witness %Y.impl_witness_table, @C.as.Y.impl(constants.%OuterParam) [symbolic = %Y.impl_witness.loc14_29.2 (constants.%Y.impl_witness.c9b)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -665,27 +697,31 @@ fn F() { // CHECK:STDOUT: class { // CHECK:STDOUT: %Y.decl: type = interface_decl @Y [symbolic = @Outer.%Y.type (constants.%Y.type.6da)] {} {} // CHECK:STDOUT: %Outer.G.decl: @Outer.%Outer.G.type (%Outer.G.type.2cf) = fn_decl @Outer.G [symbolic = @Outer.%Outer.G (constants.%Outer.G.f56)] { -// CHECK:STDOUT: %H.patt.loc11_16.1: @Outer.G.%pattern_type (%pattern_type.68e) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc11_16.2 (constants.%H.patt.a60)] +// CHECK:STDOUT: %H.patt.loc11_16.1: @Outer.G.%pattern_type (%pattern_type.a5e) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc11_16.2 (constants.%H.patt.7f4)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc11_21.1: type = splice_block %.loc11_21.2 [symbolic = %Y_where.type (constants.%Y_where.type.9b0)] { -// CHECK:STDOUT: %.Self.loc11_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc11_21.1: type = splice_block %.loc11_21.2 [symbolic = %Y_where.type (constants.%Y_where.type.883)] { +// CHECK:STDOUT: %.Self.frozen.loc11_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc11_19: type = specific_constant @Outer.%Y.decl, @Outer(constants.%OuterParam) [symbolic = %Y.type (constants.%Y.type.6da)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc11_19 [symbolic = %Y.type (constants.%Y.type.6da)] -// CHECK:STDOUT: %.Self.loc11_21.2: @Outer.G.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.loc11_21.1 (constants.%.Self.566)] -// CHECK:STDOUT: %.Self.ref: @Outer.G.%Y.type (%Y.type.6da) = name_ref .Self, %.Self.loc11_21.2 [symbolic = %.Self.loc11_21.1 (constants.%.Self.566)] -// CHECK:STDOUT: %.Self.as_type.loc11_27.2: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc11_27.1 (constants.%.Self.as_type.eab)] -// CHECK:STDOUT: %.loc11_27.1: type = converted %.Self.ref, %.Self.as_type.loc11_27.2 [symbolic = %.Self.as_type.loc11_27.1 (constants.%.Self.as_type.eab)] -// CHECK:STDOUT: %.loc11_27.2: @Outer.G.%Y.assoc_type (%Y.assoc_type.9e3) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.566) [symbolic = %assoc0 (constants.%assoc0.c2d)] +// CHECK:STDOUT: %.Self.frozen.loc11_21.2: @Outer.G.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_21.1 (constants.%.Self.frozen.3ed)] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %.Self.ref: @Outer.G.%Y.type (%Y.type.6da) = name_ref .Self, %.Self.frozen.loc11_21.2 [symbolic = %.Self.frozen.loc11_21.1 (constants.%.Self.frozen.3ed)] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)] +// CHECK:STDOUT: %.loc11_27.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)] +// CHECK:STDOUT: %.loc11_27.2: @Outer.G.%Y.assoc_type (%Y.assoc_type.9e3) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.3ed) [symbolic = %assoc0 (constants.%assoc0.c2d)] // CHECK:STDOUT: %T.ref: @Outer.G.%Y.assoc_type (%Y.assoc_type.9e3) = name_ref T, %.loc11_27.2 [symbolic = %assoc0 (constants.%assoc0.c2d)] -// CHECK:STDOUT: %impl.elem0.loc11_27.2: type = impl_witness_access constants.%Y.lookup_impl_witness.775, element0 [symbolic = %impl.elem0.loc11_27.1 (constants.%impl.elem0.231)] +// CHECK:STDOUT: %impl.elem0.loc11_27.3: type = impl_witness_access constants.%Y.lookup_impl_witness.9ce, element0 [symbolic = %impl.elem0.loc11_27.1 (constants.%impl.elem0.c34)] // CHECK:STDOUT: %.loc11_33.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_33.2: type = converted %.loc11_33.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc11_21.2: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.9b0)] { -// CHECK:STDOUT: requirement_base_facet_type %Y.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11_27.2, %.loc11_33.2 +// CHECK:STDOUT: %rewrite.loc11_30.1 = requirement_rewrite %impl.elem0.loc11_27.3, %.loc11_33.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_27.4: type = impl_witness_access constants.%Y.lookup_impl_witness.75a, element0 [symbolic = %impl.elem0.loc11_27.2 (constants.%impl.elem0.5e0)] +// CHECK:STDOUT: %rewrite.loc11_30.2 = requirement_rewrite %impl.elem0.loc11_27.4, %.loc11_33.2 [concrete] +// CHECK:STDOUT: %.loc11_21.2: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.883)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %rewrite.loc11_30.2 = requirement_rewrite %impl.elem0.loc11_27.4, %.loc11_33.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %H.loc11_16.2: @Outer.G.%Y_where.type (%Y_where.type.9b0) = symbolic_binding H, 1 [symbolic = %H.loc11_16.1 (constants.%H)] +// CHECK:STDOUT: %H.loc11_16.2: @Outer.G.%Y_where.type (%Y_where.type.883) = symbolic_binding H, 1 [symbolic = %H.loc11_16.1 (constants.%H)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [symbolic = @Outer.%C (constants.%C.147)] {} {} // CHECK:STDOUT: impl_decl @C.as.Y.impl [concrete] {} { @@ -693,18 +729,22 @@ fn F() { // CHECK:STDOUT: %C.ref: type = name_ref C, %.loc14_8 [symbolic = %C (constants.%C.147)] // CHECK:STDOUT: %.loc14_13: type = specific_constant @Outer.%Y.decl, @Outer(constants.%OuterParam) [symbolic = %Y.type (constants.%Y.type.6da)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc14_13 [symbolic = %Y.type (constants.%Y.type.6da)] -// CHECK:STDOUT: %.Self.loc14_15.1: @C.as.Y.impl.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.loc14_15.2 (constants.%.Self.566)] -// CHECK:STDOUT: %.Self.ref: @C.as.Y.impl.%Y.type (%Y.type.6da) = name_ref .Self, %.Self.loc14_15.1 [symbolic = %.Self.loc14_15.2 (constants.%.Self.566)] -// CHECK:STDOUT: %.Self.as_type.loc14_21.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc14_21.2 (constants.%.Self.as_type.eab)] -// CHECK:STDOUT: %.loc14_21.1: type = converted %.Self.ref, %.Self.as_type.loc14_21.1 [symbolic = %.Self.as_type.loc14_21.2 (constants.%.Self.as_type.eab)] -// CHECK:STDOUT: %.loc14_21.2: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.9e3) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.566) [symbolic = %assoc0 (constants.%assoc0.c2d)] +// CHECK:STDOUT: %.Self.frozen.loc14_15.1: @C.as.Y.impl.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.frozen.loc14_15.2 (constants.%.Self.frozen.3ed)] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %.Self.ref: @C.as.Y.impl.%Y.type (%Y.type.6da) = name_ref .Self, %.Self.frozen.loc14_15.1 [symbolic = %.Self.frozen.loc14_15.2 (constants.%.Self.frozen.3ed)] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)] +// CHECK:STDOUT: %.loc14_21.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)] +// CHECK:STDOUT: %.loc14_21.2: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.9e3) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.3ed) [symbolic = %assoc0 (constants.%assoc0.c2d)] // CHECK:STDOUT: %T.ref: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.9e3) = name_ref T, %.loc14_21.2 [symbolic = %assoc0 (constants.%assoc0.c2d)] -// CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%Y.lookup_impl_witness.775, element0 [symbolic = %impl.elem0.loc14_21.2 (constants.%impl.elem0.231)] +// CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%Y.lookup_impl_witness.9ce, element0 [symbolic = %impl.elem0.loc14_21.3 (constants.%impl.elem0.c34)] // CHECK:STDOUT: %.loc14_27.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_27.2: type = converted %.loc14_27.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc14_15: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.9b0)] { -// CHECK:STDOUT: requirement_base_facet_type %Y.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc14_21.1, %.loc14_27.2 +// CHECK:STDOUT: %rewrite.loc14_24.1 = requirement_rewrite %impl.elem0.loc14_21.1, %.loc14_27.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc14_21.2: type = impl_witness_access constants.%Y.lookup_impl_witness.75a, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.5e0)] +// CHECK:STDOUT: %rewrite.loc14_24.2 = requirement_rewrite %impl.elem0.loc14_21.2, %.loc14_27.2 [concrete] +// CHECK:STDOUT: %.loc14_15: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.883)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %rewrite.loc14_24.2 = requirement_rewrite %impl.elem0.loc14_21.2, %.loc14_27.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357] @@ -722,20 +762,23 @@ fn F() { // CHECK:STDOUT: class; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Outer.G(@Outer.%OuterParam.loc6_23.2: %Z1.type, %H.loc11_16.2: @Outer.G.%Y_where.type (%Y_where.type.9b0)) { +// CHECK:STDOUT: generic fn @Outer.G(@Outer.%OuterParam.loc6_23.2: %Z1.type, %H.loc11_16.2: @Outer.G.%Y_where.type (%Y_where.type.883)) { // CHECK:STDOUT: %OuterParam: %Z1.type = symbolic_binding OuterParam, 0 [symbolic = %OuterParam (constants.%OuterParam)] // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.6da)] -// CHECK:STDOUT: %.Self.loc11_21.1: @Outer.G.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.loc11_21.1 (constants.%.Self.566)] +// CHECK:STDOUT: %.Self.frozen.loc11_21.1: @Outer.G.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_21.1 (constants.%.Self.frozen.3ed)] // CHECK:STDOUT: %require_complete: = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete.ab6)] -// CHECK:STDOUT: %.Self.as_type.loc11_27.1: type = facet_access_type %.Self.loc11_21.1 [symbolic = %.Self.as_type.loc11_27.1 (constants.%.Self.as_type.eab)] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc11_21.1 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.b76)] // CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.9e3)] // CHECK:STDOUT: %assoc0: @Outer.G.%Y.assoc_type (%Y.assoc_type.9e3) = assoc_entity element0, @Y.WithSelf.%T [symbolic = %assoc0 (constants.%assoc0.c2d)] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self.loc11_21.1, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.775)] -// CHECK:STDOUT: %impl.elem0.loc11_27.1: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_27.1 (constants.%impl.elem0.231)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc11_27.1 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.9b0)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Y_where.type [symbolic = %pattern_type (constants.%pattern_type.68e)] -// CHECK:STDOUT: %H.patt.loc11_16.2: @Outer.G.%pattern_type (%pattern_type.68e) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc11_16.2 (constants.%H.patt.a60)] -// CHECK:STDOUT: %H.loc11_16.1: @Outer.G.%Y_where.type (%Y_where.type.9b0) = symbolic_binding H, 1 [symbolic = %H.loc11_16.1 (constants.%H)] +// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_27.1: = lookup_impl_witness %.Self.frozen.loc11_21.1, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc11_27.1 (constants.%Y.lookup_impl_witness.9ce)] +// CHECK:STDOUT: %impl.elem0.loc11_27.1: type = impl_witness_access %Y.lookup_impl_witness.loc11_27.1, element0 [symbolic = %impl.elem0.loc11_27.1 (constants.%impl.elem0.c34)] +// CHECK:STDOUT: %.Self: @Outer.G.%Y.type (%Y.type.6da) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.b74)] +// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_27.2: = lookup_impl_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc11_27.2 (constants.%Y.lookup_impl_witness.75a)] +// CHECK:STDOUT: %impl.elem0.loc11_27.2: type = impl_witness_access %Y.lookup_impl_witness.loc11_27.2, element0 [symbolic = %impl.elem0.loc11_27.2 (constants.%impl.elem0.5e0)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc11_27.2 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.883)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Y_where.type [symbolic = %pattern_type (constants.%pattern_type.a5e)] +// CHECK:STDOUT: %H.patt.loc11_16.2: @Outer.G.%pattern_type (%pattern_type.a5e) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc11_16.2 (constants.%H.patt.7f4)] +// CHECK:STDOUT: %H.loc11_16.1: @Outer.G.%Y_where.type (%Y_where.type.883) = symbolic_binding H, 1 [symbolic = %H.loc11_16.1 (constants.%H)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -783,9 +826,9 @@ fn F() { // CHECK:STDOUT: %Outer.loc21_49: type = class_type @Outer, @Outer(constants.%Z1.facet) [concrete = constants.%Outer.22e] // CHECK:STDOUT: %.loc21_50: type = specific_constant @Outer.%C.decl, @Outer(constants.%Z1.facet) [concrete = constants.%C.5e2] // CHECK:STDOUT: %C.ref: type = name_ref C, %.loc21_50 [concrete = constants.%C.5e2] -// CHECK:STDOUT: %facet_value.loc21_52: %Y_where.type.948 = facet_value constants.%C.5e2, (constants.%Y.impl_witness.056) [concrete = constants.%facet_value.1c3] -// CHECK:STDOUT: %.loc21_52: %Y_where.type.948 = converted constants.%C.5e2, %facet_value.loc21_52 [concrete = constants.%facet_value.1c3] -// CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %G.ref, @Outer.G(constants.%Z1.facet, constants.%facet_value.1c3) [concrete = constants.%Outer.G.specific_fn] +// CHECK:STDOUT: %facet_value.loc21_52: %Y_where.type.8eb = facet_value constants.%C.5e2, (constants.%Y.impl_witness.82a) [concrete = constants.%facet_value.58a] +// CHECK:STDOUT: %.loc21_52: %Y_where.type.8eb = converted constants.%C.5e2, %facet_value.loc21_52 [concrete = constants.%facet_value.58a] +// CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %G.ref, @Outer.G(constants.%Z1.facet, constants.%facet_value.58a) [concrete = constants.%Outer.G.specific_fn] // CHECK:STDOUT: %Outer.G.call: init %empty_tuple.type = call %Outer.G.specific_fn() // CHECK:STDOUT: return // CHECK:STDOUT: @@ -825,7 +868,7 @@ fn F() { // CHECK:STDOUT: %assoc0 => constants.%assoc0.c2d // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Y.WithSelf(constants.%OuterParam, constants.%.Self.566) { +// CHECK:STDOUT: specific @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.3ed) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.9e3 @@ -835,16 +878,19 @@ fn F() { // CHECK:STDOUT: specific @Outer.G(constants.%OuterParam, constants.%H) { // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.type => constants.%Y.type.6da -// CHECK:STDOUT: %.Self.loc11_21.1 => constants.%.Self.566 +// CHECK:STDOUT: %.Self.frozen.loc11_21.1 => constants.%.Self.frozen.3ed // CHECK:STDOUT: %require_complete => constants.%require_complete.ab6 -// CHECK:STDOUT: %.Self.as_type.loc11_27.1 => constants.%.Self.as_type.eab +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.b76 // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.9e3 // CHECK:STDOUT: %assoc0 => constants.%assoc0.c2d -// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.775 -// CHECK:STDOUT: %impl.elem0.loc11_27.1 => constants.%impl.elem0.231 -// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.9b0 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.68e -// CHECK:STDOUT: %H.patt.loc11_16.2 => constants.%H.patt.a60 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_27.1 => constants.%Y.lookup_impl_witness.9ce +// CHECK:STDOUT: %impl.elem0.loc11_27.1 => constants.%impl.elem0.c34 +// CHECK:STDOUT: %.Self => constants.%.Self.b74 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_27.2 => constants.%Y.lookup_impl_witness.75a +// CHECK:STDOUT: %impl.elem0.loc11_27.2 => constants.%impl.elem0.5e0 +// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.883 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.a5e +// CHECK:STDOUT: %H.patt.loc11_16.2 => constants.%H.patt.7f4 // CHECK:STDOUT: %H.loc11_16.1 => constants.%H // CHECK:STDOUT: } // CHECK:STDOUT: @@ -854,18 +900,21 @@ fn F() { // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %C => constants.%C.147 // CHECK:STDOUT: %Y.type => constants.%Y.type.6da -// CHECK:STDOUT: %.Self.loc14_15.2 => constants.%.Self.566 +// CHECK:STDOUT: %.Self.frozen.loc14_15.2 => constants.%.Self.frozen.3ed // CHECK:STDOUT: %require_complete.loc14_21 => constants.%require_complete.ab6 -// CHECK:STDOUT: %.Self.as_type.loc14_21.2 => constants.%.Self.as_type.eab +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.b76 // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.9e3 // CHECK:STDOUT: %assoc0 => constants.%assoc0.c2d -// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.775 -// CHECK:STDOUT: %impl.elem0.loc14_21.2 => constants.%impl.elem0.231 -// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.9b0 -// CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.94f +// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.1 => constants.%Y.lookup_impl_witness.9ce +// CHECK:STDOUT: %impl.elem0.loc14_21.3 => constants.%impl.elem0.c34 +// CHECK:STDOUT: %.Self => constants.%.Self.b74 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.2 => constants.%Y.lookup_impl_witness.75a +// CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.5e0 +// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.883 +// CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.c9b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Y.WithSelf(constants.%OuterParam, constants.%Y.facet.93f) { +// CHECK:STDOUT: specific @Y.WithSelf(constants.%OuterParam, constants.%Y.facet.798) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.9e3 @@ -904,18 +953,21 @@ fn F() { // CHECK:STDOUT: %OuterParam => constants.%Z1.facet // CHECK:STDOUT: %C => constants.%C.5e2 // CHECK:STDOUT: %Y.type => constants.%Y.type.b7c -// CHECK:STDOUT: %.Self.loc14_15.2 => constants.%.Self.42f +// CHECK:STDOUT: %.Self.frozen.loc14_15.2 => constants.%.Self.frozen.70d // CHECK:STDOUT: %require_complete.loc14_21 => constants.%complete_type.c4c -// CHECK:STDOUT: %.Self.as_type.loc14_21.2 => constants.%.Self.as_type.579 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.1e5 // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.d53 // CHECK:STDOUT: %assoc0 => constants.%assoc0.ef6 -// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.e27 -// CHECK:STDOUT: %impl.elem0.loc14_21.2 => constants.%impl.elem0.801 -// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.948 -// CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.056 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.1 => constants.%Y.lookup_impl_witness.fb3 +// CHECK:STDOUT: %impl.elem0.loc14_21.3 => constants.%impl.elem0.73b +// CHECK:STDOUT: %.Self => constants.%.Self.b06 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc14_21.2 => constants.%Y.lookup_impl_witness.d61 +// CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.400 +// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.8eb +// CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.82a // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc14_15 => constants.%complete_type.8f5 +// CHECK:STDOUT: %require_complete.loc14_15 => constants.%complete_type.d76 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Y.WithSelf(constants.%Z1.facet, constants.%Self.b90) { @@ -925,20 +977,23 @@ fn F() { // CHECK:STDOUT: %assoc0 => constants.%assoc0.ef6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Outer.G(constants.%Z1.facet, constants.%facet_value.1c3) { +// CHECK:STDOUT: specific @Outer.G(constants.%Z1.facet, constants.%facet_value.58a) { // CHECK:STDOUT: %OuterParam => constants.%Z1.facet // CHECK:STDOUT: %Y.type => constants.%Y.type.b7c -// CHECK:STDOUT: %.Self.loc11_21.1 => constants.%.Self.42f +// CHECK:STDOUT: %.Self.frozen.loc11_21.1 => constants.%.Self.frozen.70d // CHECK:STDOUT: %require_complete => constants.%complete_type.c4c -// CHECK:STDOUT: %.Self.as_type.loc11_27.1 => constants.%.Self.as_type.579 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.1e5 // CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.d53 // CHECK:STDOUT: %assoc0 => constants.%assoc0.ef6 -// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.e27 -// CHECK:STDOUT: %impl.elem0.loc11_27.1 => constants.%impl.elem0.801 -// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.948 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.4ae -// CHECK:STDOUT: %H.patt.loc11_16.2 => constants.%H.patt.a2a -// CHECK:STDOUT: %H.loc11_16.1 => constants.%facet_value.1c3 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_27.1 => constants.%Y.lookup_impl_witness.fb3 +// CHECK:STDOUT: %impl.elem0.loc11_27.1 => constants.%impl.elem0.73b +// CHECK:STDOUT: %.Self => constants.%.Self.b06 +// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_27.2 => constants.%Y.lookup_impl_witness.d61 +// CHECK:STDOUT: %impl.elem0.loc11_27.2 => constants.%impl.elem0.400 +// CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.8eb +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.692 +// CHECK:STDOUT: %H.patt.loc11_16.2 => constants.%H.patt.a46 +// CHECK:STDOUT: %H.loc11_16.1 => constants.%facet_value.58a // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } 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 1a7be58ebac5..830c8b0c9060 100644 --- a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon +++ b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon @@ -99,7 +99,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -116,31 +116,37 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %S.patt: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic] // CHECK:STDOUT: %S: type = symbolic_binding S, 1 [symbolic] // CHECK:STDOUT: %Z.type.78b: type = facet_type <@Z, @Z(%S)> [symbolic] -// CHECK:STDOUT: %.Self.a97: %Z.type.78b = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.e6b: %Z.type.78b = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %Self.1a9: %Z.type.78b = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Z.assoc_type.083: type = assoc_entity_type @Z, @Z(%S) [symbolic] // CHECK:STDOUT: %assoc0.c53: %Z.assoc_type.083 = assoc_entity element0, @Z.WithSelf.%X [symbolic] // CHECK:STDOUT: %require_complete.291: = require_complete_type %Z.type.78b [symbolic] -// CHECK:STDOUT: %.Self.as_type.120: type = facet_access_type %.Self.a97 [symbolic] -// CHECK:STDOUT: %Z.lookup_impl_witness.8c8: = lookup_impl_witness %.Self.a97, @Z, @Z(%S) [symbolic] -// CHECK:STDOUT: %impl.elem0.88a: type = impl_witness_access %Z.lookup_impl_witness.8c8, element0 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.d9d: type = facet_access_type %.Self.frozen.e6b [symbolic] +// CHECK:STDOUT: %Z.lookup_impl_witness.aff: = lookup_impl_witness %.Self.frozen.e6b, @Z, @Z(%S) [symbolic] +// CHECK:STDOUT: %impl.elem0.4c0: type = impl_witness_access %Z.lookup_impl_witness.aff, element0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %Z_where.type.ee4: type = facet_type <@Z, @Z(%S) where %impl.elem0.88a = %empty_tuple.type> [symbolic] -// CHECK:STDOUT: %Z.impl_witness.cba: = impl_witness @T.as.Z.impl.9ba.%Z.impl_witness_table, @T.as.Z.impl.9ba(%T.67d, %S) [symbolic] -// CHECK:STDOUT: %require_complete.968: = require_complete_type %Z_where.type.ee4 [symbolic] -// CHECK:STDOUT: %Z.facet.952: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.cba) [symbolic] +// CHECK:STDOUT: %.Self.6d3: %Z.type.78b = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %Z.lookup_impl_witness.d10: = lookup_impl_witness %.Self.6d3, @Z, @Z(%S) [symbolic] +// CHECK:STDOUT: %impl.elem0.1d4: type = impl_witness_access %Z.lookup_impl_witness.d10, element0 [symbolic] +// CHECK:STDOUT: %Z_where.type.a2b: type = facet_type <@Z, @Z(%S) where %impl.elem0.1d4 = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %Z.impl_witness.c0c: = impl_witness @T.as.Z.impl.447.%Z.impl_witness_table, @T.as.Z.impl.447(%T.67d, %S) [symbolic] +// CHECK:STDOUT: %require_complete.9b7: = require_complete_type %Z_where.type.a2b [symbolic] +// CHECK:STDOUT: %Z.facet.96b: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.c0c) [symbolic] // CHECK:STDOUT: %Z.type.963: type = facet_type <@Z, @Z(%C)> [concrete] -// CHECK:STDOUT: %.Self.175: %Z.type.963 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.16f: %Z.type.963 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Self.ae2: %Z.type.963 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Z.assoc_type.f4d: type = assoc_entity_type @Z, @Z(%C) [concrete] // CHECK:STDOUT: %assoc0.169: %Z.assoc_type.f4d = assoc_entity element0, @Z.WithSelf.%X [concrete] -// CHECK:STDOUT: %.Self.as_type.dac: type = facet_access_type %.Self.175 [symbolic_self] -// CHECK:STDOUT: %Z.lookup_impl_witness.46e: = lookup_impl_witness %.Self.175, @Z, @Z(%C) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.9ca: type = impl_witness_access %Z.lookup_impl_witness.46e, element0 [symbolic_self] -// CHECK:STDOUT: %Z_where.type.18c: type = facet_type <@Z, @Z(%C) where %impl.elem0.9ca = %T.67d> [symbolic] -// CHECK:STDOUT: %Z.impl_witness.fc3: = impl_witness @T.as.Z.impl.61e.%Z.impl_witness_table, @T.as.Z.impl.61e(%T.67d) [symbolic] -// CHECK:STDOUT: %require_complete.9f7: = require_complete_type %Z_where.type.18c [symbolic] -// CHECK:STDOUT: %Z.facet.fa5: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.fc3) [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.16b: type = facet_access_type %.Self.frozen.16f [symbolic_self] +// CHECK:STDOUT: %Z.lookup_impl_witness.9bf: = lookup_impl_witness %.Self.frozen.16f, @Z, @Z(%C) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b30: type = impl_witness_access %Z.lookup_impl_witness.9bf, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.e3e: %Z.type.963 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Z.lookup_impl_witness.e93: = lookup_impl_witness %.Self.e3e, @Z, @Z(%C) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.3ed: type = impl_witness_access %Z.lookup_impl_witness.e93, element0 [symbolic_self] +// CHECK:STDOUT: %Z_where.type.b22: type = facet_type <@Z, @Z(%C) where %impl.elem0.3ed = %T.67d> [symbolic] +// CHECK:STDOUT: %Z.impl_witness.2d9: = impl_witness @T.as.Z.impl.adf.%Z.impl_witness_table, @T.as.Z.impl.adf(%T.67d) [symbolic] +// CHECK:STDOUT: %require_complete.d7e: = require_complete_type %Z_where.type.b22 [symbolic] +// CHECK:STDOUT: %Z.facet.b21: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.2d9) [symbolic] // CHECK:STDOUT: %pattern_type.d7e: type = pattern_type %Z.type.963 [concrete] // CHECK:STDOUT: %T.patt.4cc: %pattern_type.d7e = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.4b3: %Z.type.963 = symbolic_binding T, 0 [symbolic] @@ -151,10 +157,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // 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.c07: type = facet_type <@Z, @Z(%C) where %impl.elem0.9ca = %T.as_type> [symbolic] -// CHECK:STDOUT: %Z.impl_witness.597: = impl_witness @T.as.Z.impl.61e.%Z.impl_witness_table, @T.as.Z.impl.61e(%T.as_type) [symbolic] -// CHECK:STDOUT: %require_complete.c7b: = require_complete_type %Z_where.type.c07 [symbolic] -// CHECK:STDOUT: %.c6c: require_specific_def_type = require_specific_def @T.as.Z.impl.61e(%T.as_type) [symbolic] +// CHECK:STDOUT: %Z_where.type.6f1: type = facet_type <@Z, @Z(%C) where %impl.elem0.3ed = %T.as_type> [symbolic] +// CHECK:STDOUT: %Z.impl_witness.d78: = impl_witness @T.as.Z.impl.adf.%Z.impl_witness_table, @T.as.Z.impl.adf(%T.as_type) [symbolic] +// CHECK:STDOUT: %require_complete.264: = require_complete_type %Z_where.type.6f1 [symbolic] +// CHECK:STDOUT: %.04f: require_specific_def_type = require_specific_def @T.as.Z.impl.adf(%T.as_type) [symbolic] // CHECK:STDOUT: %a.patt: %pattern_type.d37 = value_binding_pattern a [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -177,13 +183,13 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.patt.loc3_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc3_14.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_17.1: type = splice_block %.loc3_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc3_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_14.1 (constants.%T.67d)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @T.as.Z.impl.9ba [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl.447 [concrete] { // CHECK:STDOUT: %T.patt.loc9_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %S.patt.loc9_25.1: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc9_25.2 (constants.%S.patt)] // CHECK:STDOUT: } { @@ -191,51 +197,59 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Z.ref: %Z.type.c39 = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic] // CHECK:STDOUT: %S.ref: type = name_ref S, %S.loc9_25.1 [symbolic = %S.loc9_25.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc9_42.1: type = facet_type <@Z, @Z(constants.%S)> [symbolic = %Z.type.loc9_42.2 (constants.%Z.type.78b)] -// CHECK:STDOUT: %.Self.loc9_44.1: @T.as.Z.impl.9ba.%Z.type.loc9_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.loc9_44.2 (constants.%.Self.a97)] -// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.9ba.%Z.type.loc9_42.2 (%Z.type.78b) = name_ref .Self, %.Self.loc9_44.1 [symbolic = %.Self.loc9_44.2 (constants.%.Self.a97)] -// CHECK:STDOUT: %.Self.as_type.loc9_50.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc9_50.2 (constants.%.Self.as_type.120)] -// CHECK:STDOUT: %.loc9_50.1: type = converted %.Self.ref, %.Self.as_type.loc9_50.1 [symbolic = %.Self.as_type.loc9_50.2 (constants.%.Self.as_type.120)] -// CHECK:STDOUT: %.loc9_50.2: @T.as.Z.impl.9ba.%Z.assoc_type (%Z.assoc_type.083) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.a97) [symbolic = %assoc0 (constants.%assoc0.c53)] -// CHECK:STDOUT: %X.ref: @T.as.Z.impl.9ba.%Z.assoc_type (%Z.assoc_type.083) = name_ref X, %.loc9_50.2 [symbolic = %assoc0 (constants.%assoc0.c53)] -// CHECK:STDOUT: %impl.elem0.loc9_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.8c8, element0 [symbolic = %impl.elem0.loc9_50.2 (constants.%impl.elem0.88a)] +// CHECK:STDOUT: %.Self.frozen.loc9_44.1: @T.as.Z.impl.447.%Z.type.loc9_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_44.2 (constants.%.Self.frozen.e6b)] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc9_42.1 [concrete] +// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.447.%Z.type.loc9_42.2 (%Z.type.78b) = name_ref .Self, %.Self.frozen.loc9_44.1 [symbolic = %.Self.frozen.loc9_44.2 (constants.%.Self.frozen.e6b)] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)] +// CHECK:STDOUT: %.loc9_50.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)] +// CHECK:STDOUT: %.loc9_50.2: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.e6b) [symbolic = %assoc0 (constants.%assoc0.c53)] +// CHECK:STDOUT: %X.ref: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = name_ref X, %.loc9_50.2 [symbolic = %assoc0 (constants.%assoc0.c53)] +// CHECK:STDOUT: %impl.elem0.loc9_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.aff, element0 [symbolic = %impl.elem0.loc9_50.3 (constants.%impl.elem0.4c0)] // CHECK:STDOUT: %.loc9_56.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_56.2: type = converted %.loc9_56.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc9_44: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.ee4)] { -// CHECK:STDOUT: requirement_base_facet_type %Z.type.loc9_42.1 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc9_50.1, %.loc9_56.2 +// CHECK:STDOUT: %rewrite.loc9_53.1 = requirement_rewrite %impl.elem0.loc9_50.1, %.loc9_56.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc9_50.2: type = impl_witness_access constants.%Z.lookup_impl_witness.d10, element0 [symbolic = %impl.elem0.loc9_50.4 (constants.%impl.elem0.1d4)] +// CHECK:STDOUT: %rewrite.loc9_53.2 = requirement_rewrite %impl.elem0.loc9_50.2, %.loc9_56.2 [concrete] +// CHECK:STDOUT: %.loc9_44: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.a2b)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc9_42.1 [concrete] +// CHECK:STDOUT: %rewrite.loc9_53.2 = requirement_rewrite %impl.elem0.loc9_50.2, %.loc9_56.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc9_18.1: type = splice_block %.loc9_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc9_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc9_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc9_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc9_15.2 (constants.%T.67d)] // CHECK:STDOUT: %.loc9_28.1: type = splice_block %.loc9_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc9_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc9_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc9_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %S.loc9_25.1: type = symbolic_binding S, 1 [symbolic = %S.loc9_25.2 (constants.%S)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @T.as.Z.impl.61e [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl.adf [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: } { // CHECK:STDOUT: %T.ref.loc11_30: type = name_ref T, %T.loc11_21.1 [symbolic = %T.loc11_21.2 (constants.%T.67d)] // CHECK:STDOUT: %Z.ref: %Z.type.c39 = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Z.type: type = facet_type <@Z, @Z(constants.%C)> [concrete = constants.%Z.type.963] -// CHECK:STDOUT: %.Self.loc11_40: %Z.type.963 = symbolic_binding .Self [symbolic_self = constants.%.Self.175] -// CHECK:STDOUT: %.Self.ref: %Z.type.963 = name_ref .Self, %.Self.loc11_40 [symbolic_self = constants.%.Self.175] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type.dac] -// CHECK:STDOUT: %.loc11_46.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type.dac] -// CHECK:STDOUT: %.loc11_46.2: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%.Self.175) [concrete = constants.%assoc0.169] +// CHECK:STDOUT: %.Self.frozen.loc11_40: %Z.type.963 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.16f] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type [concrete] +// CHECK:STDOUT: %.Self.ref: %Z.type.963 = name_ref .Self, %.Self.frozen.loc11_40 [symbolic_self = constants.%.Self.frozen.16f] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type.16b] +// CHECK:STDOUT: %.loc11_46.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.16b] +// CHECK:STDOUT: %.loc11_46.2: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%.Self.frozen.16f) [concrete = constants.%assoc0.169] // CHECK:STDOUT: %X.ref: %Z.assoc_type.f4d = name_ref X, %.loc11_46.2 [concrete = constants.%assoc0.169] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Z.lookup_impl_witness.46e, element0 [symbolic_self = constants.%impl.elem0.9ca] +// CHECK:STDOUT: %impl.elem0.loc11_46.1: type = impl_witness_access constants.%Z.lookup_impl_witness.9bf, element0 [symbolic_self = constants.%impl.elem0.b30] // CHECK:STDOUT: %T.ref.loc11_51: type = name_ref T, %T.loc11_21.1 [symbolic = %T.loc11_21.2 (constants.%T.67d)] -// CHECK:STDOUT: %.loc11_40: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.18c)] { -// CHECK:STDOUT: requirement_base_facet_type %Z.type -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %T.ref.loc11_51 +// CHECK:STDOUT: %rewrite.loc11_49.1 = requirement_rewrite %impl.elem0.loc11_46.1, %T.ref.loc11_51 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_46.2: type = impl_witness_access constants.%Z.lookup_impl_witness.e93, element0 [symbolic_self = constants.%impl.elem0.3ed] +// CHECK:STDOUT: %rewrite.loc11_49.2 = requirement_rewrite %impl.elem0.loc11_46.2, %T.ref.loc11_51 [concrete] +// CHECK:STDOUT: %.loc11_40: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.b22)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type [concrete] +// CHECK:STDOUT: %rewrite.loc11_49.2 = requirement_rewrite %impl.elem0.loc11_46.2, %T.ref.loc11_51 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc11_24.1: type = splice_block %.loc11_24.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc11_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc11_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc11_24.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc11_21.1: type = symbolic_binding T, 0 [symbolic = %T.loc11_21.2 (constants.%T.67d)] @@ -246,7 +260,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %t.patt.loc13_17.1: @F.%pattern_type (%pattern_type.d37) = at_binding_pattern t, %t.param_patt.loc13_17.1 [symbolic = %t.patt.loc13_17.2 (constants.%t.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_13: type = splice_block %Z.type [concrete = constants.%Z.type.963] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %Z.ref: %Z.type.c39 = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Z.type: type = facet_type <@Z, @Z(constants.%C)> [concrete = constants.%Z.type.963] @@ -290,28 +304,31 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @T.as.Z.impl.9ba(%T.loc9_15.1: type, %S.loc9_25.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl.447(%T.loc9_15.1: type, %S.loc9_25.1: type) { // CHECK:STDOUT: %T.patt.loc9_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %T.loc9_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc9_15.2 (constants.%T.67d)] // CHECK:STDOUT: %S.patt.loc9_25.2: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc9_25.2 (constants.%S.patt)] // CHECK:STDOUT: %S.loc9_25.2: type = symbolic_binding S, 1 [symbolic = %S.loc9_25.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc9_42.2: type = facet_type <@Z, @Z(%S.loc9_25.2)> [symbolic = %Z.type.loc9_42.2 (constants.%Z.type.78b)] -// CHECK:STDOUT: %.Self.loc9_44.2: @T.as.Z.impl.9ba.%Z.type.loc9_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.loc9_44.2 (constants.%.Self.a97)] +// CHECK:STDOUT: %.Self.frozen.loc9_44.2: @T.as.Z.impl.447.%Z.type.loc9_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_44.2 (constants.%.Self.frozen.e6b)] // CHECK:STDOUT: %require_complete.loc9_50: = require_complete_type %Z.type.loc9_42.2 [symbolic = %require_complete.loc9_50 (constants.%require_complete.291)] -// CHECK:STDOUT: %.Self.as_type.loc9_50.2: type = facet_access_type %.Self.loc9_44.2 [symbolic = %.Self.as_type.loc9_50.2 (constants.%.Self.as_type.120)] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc9_44.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z, @Z(%S.loc9_25.2) [symbolic = %Z.assoc_type (constants.%Z.assoc_type.083)] -// CHECK:STDOUT: %assoc0: @T.as.Z.impl.9ba.%Z.assoc_type (%Z.assoc_type.083) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.c53)] -// CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %.Self.loc9_44.2, @Z, @Z(%S.loc9_25.2) [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness.8c8)] -// CHECK:STDOUT: %impl.elem0.loc9_50.2: type = impl_witness_access %Z.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_50.2 (constants.%impl.elem0.88a)] -// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc9_25.2) where %impl.elem0.loc9_50.2 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.ee4)] -// CHECK:STDOUT: %Z.impl_witness.loc9_58.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.9ba(%T.loc9_15.2, %S.loc9_25.2) [symbolic = %Z.impl_witness.loc9_58.2 (constants.%Z.impl_witness.cba)] +// CHECK:STDOUT: %assoc0: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.c53)] +// CHECK:STDOUT: %Z.lookup_impl_witness.loc9_50.1: = lookup_impl_witness %.Self.frozen.loc9_44.2, @Z, @Z(%S.loc9_25.2) [symbolic = %Z.lookup_impl_witness.loc9_50.1 (constants.%Z.lookup_impl_witness.aff)] +// CHECK:STDOUT: %impl.elem0.loc9_50.3: type = impl_witness_access %Z.lookup_impl_witness.loc9_50.1, element0 [symbolic = %impl.elem0.loc9_50.3 (constants.%impl.elem0.4c0)] +// CHECK:STDOUT: %.Self: @T.as.Z.impl.447.%Z.type.loc9_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.6d3)] +// CHECK:STDOUT: %Z.lookup_impl_witness.loc9_50.2: = lookup_impl_witness %.Self, @Z, @Z(%S.loc9_25.2) [symbolic = %Z.lookup_impl_witness.loc9_50.2 (constants.%Z.lookup_impl_witness.d10)] +// CHECK:STDOUT: %impl.elem0.loc9_50.4: type = impl_witness_access %Z.lookup_impl_witness.loc9_50.2, element0 [symbolic = %impl.elem0.loc9_50.4 (constants.%impl.elem0.1d4)] +// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc9_25.2) where %impl.elem0.loc9_50.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.a2b)] +// CHECK:STDOUT: %Z.impl_witness.loc9_58.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.447(%T.loc9_15.2, %S.loc9_25.2) [symbolic = %Z.impl_witness.loc9_58.2 (constants.%Z.impl_witness.c0c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc9_44: = require_complete_type %Z_where.type [symbolic = %require_complete.loc9_44 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc9_44: = require_complete_type %Z_where.type [symbolic = %require_complete.loc9_44 (constants.%require_complete.9b7)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %.loc9_44 { -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.9ba [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc9_58.1: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.9ba(constants.%T.67d, constants.%S) [symbolic = %Z.impl_witness.loc9_58.2 (constants.%Z.impl_witness.cba)] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.447 [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc9_58.1: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.447(constants.%T.67d, constants.%S) [symbolic = %Z.impl_witness.loc9_58.2 (constants.%Z.impl_witness.c0c)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -320,18 +337,18 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @T.as.Z.impl.61e(%T.loc11_21.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl.adf(%T.loc11_21.1: 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.9ca = %T.loc11_21.2> [symbolic = %Z_where.type (constants.%Z_where.type.18c)] -// CHECK:STDOUT: %Z.impl_witness.loc11_53.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.61e(%T.loc11_21.2) [symbolic = %Z.impl_witness.loc11_53.2 (constants.%Z.impl_witness.fc3)] +// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.3ed = %T.loc11_21.2> [symbolic = %Z_where.type (constants.%Z_where.type.b22)] +// CHECK:STDOUT: %Z.impl_witness.loc11_53.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.adf(%T.loc11_21.2) [symbolic = %Z.impl_witness.loc11_53.2 (constants.%Z.impl_witness.2d9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.9f7)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.d7e)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref.loc11_30 as %.loc11_40 { -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.61e [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc11_53.1: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.61e(constants.%T.67d) [symbolic = %Z.impl_witness.loc11_53.2 (constants.%Z.impl_witness.fc3)] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.adf [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc11_53.1: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.adf(constants.%T.67d) [symbolic = %Z.impl_witness.loc11_53.2 (constants.%Z.impl_witness.2d9)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%T.67d [symbolic = %T.loc11_21.2 (constants.%T.67d)] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -358,7 +375,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc13_19.1 [symbolic = %require_complete (constants.%require_complete.df7)] -// CHECK:STDOUT: %.loc15_18.4: require_specific_def_type = require_specific_def @T.as.Z.impl.61e(%T.as_type.loc13_19.1) [symbolic = %.loc15_18.4 (constants.%.c6c)] +// CHECK:STDOUT: %.loc15_18.4: require_specific_def_type = require_specific_def @T.as.Z.impl.adf(%T.as_type.loc13_19.1) [symbolic = %.loc15_18.4 (constants.%.04f)] // CHECK:STDOUT: %a.patt.loc15_15.2: @F.%pattern_type (%pattern_type.d37) = value_binding_pattern a [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%t.param: @F.%T.as_type.loc13_19.1 (%T.as_type)) { @@ -370,7 +387,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc15_18.2: type = converted %T.ref.loc15, %T.as_type.loc15 [symbolic = %T.as_type.loc13_19.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc15_18.3: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%T.4b3) [concrete = constants.%assoc0.169] // CHECK:STDOUT: %X.ref: %Z.assoc_type.f4d = name_ref X, %.loc15_18.3 [concrete = constants.%assoc0.169] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Z.impl_witness.597, element0 [symbolic = %T.as_type.loc13_19.1 (constants.%T.as_type)] +// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Z.impl_witness.d78, element0 [symbolic = %T.as_type.loc13_19.1 (constants.%T.as_type)] // CHECK:STDOUT: } // CHECK:STDOUT: %a: @F.%T.as_type.loc13_19.1 (%T.as_type) = wrapper_binding a, %t.ref // CHECK:STDOUT: name_binding_decl { @@ -405,31 +422,34 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %assoc0 => constants.%assoc0.c53 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%.Self.a97) { +// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%.Self.frozen.e6b) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%S // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083 // CHECK:STDOUT: %assoc0 => constants.%assoc0.c53 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @T.as.Z.impl.9ba(constants.%T.67d, constants.%S) { +// CHECK:STDOUT: specific @T.as.Z.impl.447(constants.%T.67d, constants.%S) { // CHECK:STDOUT: %T.patt.loc9_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc9_15.2 => constants.%T.67d // CHECK:STDOUT: %S.patt.loc9_25.2 => constants.%S.patt // CHECK:STDOUT: %S.loc9_25.2 => constants.%S // CHECK:STDOUT: %Z.type.loc9_42.2 => constants.%Z.type.78b -// CHECK:STDOUT: %.Self.loc9_44.2 => constants.%.Self.a97 +// CHECK:STDOUT: %.Self.frozen.loc9_44.2 => constants.%.Self.frozen.e6b // CHECK:STDOUT: %require_complete.loc9_50 => constants.%require_complete.291 -// CHECK:STDOUT: %.Self.as_type.loc9_50.2 => constants.%.Self.as_type.120 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.d9d // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083 // CHECK:STDOUT: %assoc0 => constants.%assoc0.c53 -// CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.lookup_impl_witness.8c8 -// CHECK:STDOUT: %impl.elem0.loc9_50.2 => constants.%impl.elem0.88a -// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.ee4 -// CHECK:STDOUT: %Z.impl_witness.loc9_58.2 => constants.%Z.impl_witness.cba +// CHECK:STDOUT: %Z.lookup_impl_witness.loc9_50.1 => constants.%Z.lookup_impl_witness.aff +// CHECK:STDOUT: %impl.elem0.loc9_50.3 => constants.%impl.elem0.4c0 +// CHECK:STDOUT: %.Self => constants.%.Self.6d3 +// CHECK:STDOUT: %Z.lookup_impl_witness.loc9_50.2 => constants.%Z.lookup_impl_witness.d10 +// CHECK:STDOUT: %impl.elem0.loc9_50.4 => constants.%impl.elem0.1d4 +// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.a2b +// CHECK:STDOUT: %Z.impl_witness.loc9_58.2 => constants.%Z.impl_witness.c0c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%Z.facet.952) { +// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%Z.facet.96b) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%S // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083 @@ -452,21 +472,21 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %assoc0 => constants.%assoc0.169 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%.Self.175) { +// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%.Self.frozen.16f) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%C // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.f4d // CHECK:STDOUT: %assoc0 => constants.%assoc0.169 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @T.as.Z.impl.61e(constants.%T.67d) { +// CHECK:STDOUT: specific @T.as.Z.impl.adf(constants.%T.67d) { // 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.18c -// CHECK:STDOUT: %Z.impl_witness.loc11_53.2 => constants.%Z.impl_witness.fc3 +// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.b22 +// CHECK:STDOUT: %Z.impl_witness.loc11_53.2 => constants.%Z.impl_witness.2d9 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%Z.facet.fa5) { +// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%Z.facet.b21) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%C // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.f4d @@ -489,21 +509,21 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %assoc0 => constants.%assoc0.169 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @T.as.Z.impl.61e(constants.%T.as_type) { +// CHECK:STDOUT: specific @T.as.Z.impl.adf(constants.%T.as_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.c07 -// CHECK:STDOUT: %Z.impl_witness.loc11_53.2 => constants.%Z.impl_witness.597 +// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.6f1 +// CHECK:STDOUT: %Z.impl_witness.loc11_53.2 => constants.%Z.impl_witness.d78 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.c7b +// CHECK:STDOUT: %require_complete => constants.%require_complete.264 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_nonfinal_specialized_symbolic_rewrite.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -522,31 +542,37 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %S.patt: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic] // CHECK:STDOUT: %S: type = symbolic_binding S, 1 [symbolic] // CHECK:STDOUT: %Z.type.78b: type = facet_type <@Z, @Z(%S)> [symbolic] -// CHECK:STDOUT: %.Self.a97: %Z.type.78b = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.e6b: %Z.type.78b = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %Self.1a9: %Z.type.78b = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Z.assoc_type.083: type = assoc_entity_type @Z, @Z(%S) [symbolic] // CHECK:STDOUT: %assoc0.c53: %Z.assoc_type.083 = assoc_entity element0, @Z.WithSelf.%X [symbolic] // CHECK:STDOUT: %require_complete.291: = require_complete_type %Z.type.78b [symbolic] -// CHECK:STDOUT: %.Self.as_type.120: type = facet_access_type %.Self.a97 [symbolic] -// CHECK:STDOUT: %Z.lookup_impl_witness.8c8: = lookup_impl_witness %.Self.a97, @Z, @Z(%S) [symbolic] -// CHECK:STDOUT: %impl.elem0.88a: type = impl_witness_access %Z.lookup_impl_witness.8c8, element0 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.d9d: type = facet_access_type %.Self.frozen.e6b [symbolic] +// CHECK:STDOUT: %Z.lookup_impl_witness.aff: = lookup_impl_witness %.Self.frozen.e6b, @Z, @Z(%S) [symbolic] +// CHECK:STDOUT: %impl.elem0.4c0: type = impl_witness_access %Z.lookup_impl_witness.aff, element0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %Z_where.type.ee4: type = facet_type <@Z, @Z(%S) where %impl.elem0.88a = %empty_tuple.type> [symbolic] -// CHECK:STDOUT: %Z.impl_witness.cba: = impl_witness @T.as.Z.impl.9ba.%Z.impl_witness_table, @T.as.Z.impl.9ba(%T.67d, %S) [symbolic] -// CHECK:STDOUT: %require_complete.968: = require_complete_type %Z_where.type.ee4 [symbolic] -// CHECK:STDOUT: %Z.facet.952: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.cba) [symbolic] +// CHECK:STDOUT: %.Self.6d3: %Z.type.78b = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %Z.lookup_impl_witness.d10: = lookup_impl_witness %.Self.6d3, @Z, @Z(%S) [symbolic] +// CHECK:STDOUT: %impl.elem0.1d4: type = impl_witness_access %Z.lookup_impl_witness.d10, element0 [symbolic] +// CHECK:STDOUT: %Z_where.type.a2b: type = facet_type <@Z, @Z(%S) where %impl.elem0.1d4 = %empty_tuple.type> [symbolic] +// CHECK:STDOUT: %Z.impl_witness.c0c: = impl_witness @T.as.Z.impl.447.%Z.impl_witness_table, @T.as.Z.impl.447(%T.67d, %S) [symbolic] +// CHECK:STDOUT: %require_complete.9b7: = require_complete_type %Z_where.type.a2b [symbolic] +// CHECK:STDOUT: %Z.facet.96b: %Z.type.78b = facet_value %T.67d, (%Z.impl_witness.c0c) [symbolic] // CHECK:STDOUT: %Z.type.963: type = facet_type <@Z, @Z(%C)> [concrete] -// CHECK:STDOUT: %.Self.175: %Z.type.963 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.16f: %Z.type.963 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Self.ae2: %Z.type.963 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %Z.assoc_type.f4d: type = assoc_entity_type @Z, @Z(%C) [concrete] // CHECK:STDOUT: %assoc0.169: %Z.assoc_type.f4d = assoc_entity element0, @Z.WithSelf.%X [concrete] -// CHECK:STDOUT: %.Self.as_type.dac: type = facet_access_type %.Self.175 [symbolic_self] -// CHECK:STDOUT: %Z.lookup_impl_witness.46e: = lookup_impl_witness %.Self.175, @Z, @Z(%C) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.9ca: type = impl_witness_access %Z.lookup_impl_witness.46e, element0 [symbolic_self] -// CHECK:STDOUT: %Z_where.type.18c: type = facet_type <@Z, @Z(%C) where %impl.elem0.9ca = %T.67d> [symbolic] -// CHECK:STDOUT: %Z.impl_witness.fc3: = impl_witness @T.as.Z.impl.61e.%Z.impl_witness_table, @T.as.Z.impl.61e(%T.67d) [symbolic] -// CHECK:STDOUT: %require_complete.9f7: = require_complete_type %Z_where.type.18c [symbolic] -// CHECK:STDOUT: %Z.facet.fa5: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.fc3) [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.16b: type = facet_access_type %.Self.frozen.16f [symbolic_self] +// CHECK:STDOUT: %Z.lookup_impl_witness.9bf: = lookup_impl_witness %.Self.frozen.16f, @Z, @Z(%C) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b30: type = impl_witness_access %Z.lookup_impl_witness.9bf, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.e3e: %Z.type.963 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Z.lookup_impl_witness.e93: = lookup_impl_witness %.Self.e3e, @Z, @Z(%C) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.3ed: type = impl_witness_access %Z.lookup_impl_witness.e93, element0 [symbolic_self] +// CHECK:STDOUT: %Z_where.type.b22: type = facet_type <@Z, @Z(%C) where %impl.elem0.3ed = %T.67d> [symbolic] +// CHECK:STDOUT: %Z.impl_witness.2d9: = impl_witness @T.as.Z.impl.adf.%Z.impl_witness_table, @T.as.Z.impl.adf(%T.67d) [symbolic] +// CHECK:STDOUT: %require_complete.d7e: = require_complete_type %Z_where.type.b22 [symbolic] +// CHECK:STDOUT: %Z.facet.b21: %Z.type.963 = facet_value %T.67d, (%Z.impl_witness.2d9) [symbolic] // CHECK:STDOUT: %pattern_type.d7e: type = pattern_type %Z.type.963 [concrete] // CHECK:STDOUT: %T.patt.4cc: %pattern_type.d7e = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.4b3: %Z.type.963 = symbolic_binding T, 0 [symbolic] @@ -602,14 +628,14 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.patt.loc3_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc3_14.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_17.1: type = splice_block %.loc3_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc3_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_14.1 (constants.%T.67d)] // CHECK:STDOUT: } // CHECK:STDOUT: %Y.decl: type = interface_decl @Y [concrete = constants.%Y.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: impl_decl @T.as.Z.impl.9ba [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl.447 [concrete] { // CHECK:STDOUT: %T.patt.loc10_15.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %S.patt.loc10_25.1: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc10_25.2 (constants.%S.patt)] // CHECK:STDOUT: } { @@ -617,51 +643,59 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Z.ref: %Z.type.c39 = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic] // CHECK:STDOUT: %S.ref: type = name_ref S, %S.loc10_25.1 [symbolic = %S.loc10_25.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc10_42.1: type = facet_type <@Z, @Z(constants.%S)> [symbolic = %Z.type.loc10_42.2 (constants.%Z.type.78b)] -// CHECK:STDOUT: %.Self.loc10_44.1: @T.as.Z.impl.9ba.%Z.type.loc10_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.loc10_44.2 (constants.%.Self.a97)] -// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.9ba.%Z.type.loc10_42.2 (%Z.type.78b) = name_ref .Self, %.Self.loc10_44.1 [symbolic = %.Self.loc10_44.2 (constants.%.Self.a97)] -// CHECK:STDOUT: %.Self.as_type.loc10_50.1: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc10_50.2 (constants.%.Self.as_type.120)] -// CHECK:STDOUT: %.loc10_50.1: type = converted %.Self.ref, %.Self.as_type.loc10_50.1 [symbolic = %.Self.as_type.loc10_50.2 (constants.%.Self.as_type.120)] -// CHECK:STDOUT: %.loc10_50.2: @T.as.Z.impl.9ba.%Z.assoc_type (%Z.assoc_type.083) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.a97) [symbolic = %assoc0 (constants.%assoc0.c53)] -// CHECK:STDOUT: %X.ref: @T.as.Z.impl.9ba.%Z.assoc_type (%Z.assoc_type.083) = name_ref X, %.loc10_50.2 [symbolic = %assoc0 (constants.%assoc0.c53)] -// CHECK:STDOUT: %impl.elem0.loc10_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.8c8, element0 [symbolic = %impl.elem0.loc10_50.2 (constants.%impl.elem0.88a)] +// CHECK:STDOUT: %.Self.frozen.loc10_44.1: @T.as.Z.impl.447.%Z.type.loc10_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc10_44.2 (constants.%.Self.frozen.e6b)] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc10_42.1 [concrete] +// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.447.%Z.type.loc10_42.2 (%Z.type.78b) = name_ref .Self, %.Self.frozen.loc10_44.1 [symbolic = %.Self.frozen.loc10_44.2 (constants.%.Self.frozen.e6b)] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)] +// CHECK:STDOUT: %.loc10_50.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)] +// CHECK:STDOUT: %.loc10_50.2: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.e6b) [symbolic = %assoc0 (constants.%assoc0.c53)] +// CHECK:STDOUT: %X.ref: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = name_ref X, %.loc10_50.2 [symbolic = %assoc0 (constants.%assoc0.c53)] +// CHECK:STDOUT: %impl.elem0.loc10_50.1: type = impl_witness_access constants.%Z.lookup_impl_witness.aff, element0 [symbolic = %impl.elem0.loc10_50.3 (constants.%impl.elem0.4c0)] // CHECK:STDOUT: %.loc10_56.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_56.2: type = converted %.loc10_56.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc10_44: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.ee4)] { -// CHECK:STDOUT: requirement_base_facet_type %Z.type.loc10_42.1 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc10_50.1, %.loc10_56.2 +// CHECK:STDOUT: %rewrite.loc10_53.1 = requirement_rewrite %impl.elem0.loc10_50.1, %.loc10_56.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_50.2: type = impl_witness_access constants.%Z.lookup_impl_witness.d10, element0 [symbolic = %impl.elem0.loc10_50.4 (constants.%impl.elem0.1d4)] +// CHECK:STDOUT: %rewrite.loc10_53.2 = requirement_rewrite %impl.elem0.loc10_50.2, %.loc10_56.2 [concrete] +// CHECK:STDOUT: %.loc10_44: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.a2b)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc10_42.1 [concrete] +// CHECK:STDOUT: %rewrite.loc10_53.2 = requirement_rewrite %impl.elem0.loc10_50.2, %.loc10_56.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc10_18.1: type = splice_block %.loc10_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc10_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc10_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc10_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.2 (constants.%T.67d)] // CHECK:STDOUT: %.loc10_28.1: type = splice_block %.loc10_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc10_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc10_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc10_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %S.loc10_25.1: type = symbolic_binding S, 1 [symbolic = %S.loc10_25.2 (constants.%S)] // CHECK:STDOUT: } -// CHECK:STDOUT: impl_decl @T.as.Z.impl.61e [concrete] { +// CHECK:STDOUT: impl_decl @T.as.Z.impl.adf [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: } { // CHECK:STDOUT: %T.ref.loc12_24: type = name_ref T, %T.loc12_15.1 [symbolic = %T.loc12_15.2 (constants.%T.67d)] // CHECK:STDOUT: %Z.ref: %Z.type.c39 = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Z.type: type = facet_type <@Z, @Z(constants.%C)> [concrete = constants.%Z.type.963] -// CHECK:STDOUT: %.Self.loc12_34: %Z.type.963 = symbolic_binding .Self [symbolic_self = constants.%.Self.175] -// CHECK:STDOUT: %.Self.ref: %Z.type.963 = name_ref .Self, %.Self.loc12_34 [symbolic_self = constants.%.Self.175] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type.dac] -// CHECK:STDOUT: %.loc12_40.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type.dac] -// CHECK:STDOUT: %.loc12_40.2: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%.Self.175) [concrete = constants.%assoc0.169] +// CHECK:STDOUT: %.Self.frozen.loc12_34: %Z.type.963 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.16f] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type [concrete] +// CHECK:STDOUT: %.Self.ref: %Z.type.963 = name_ref .Self, %.Self.frozen.loc12_34 [symbolic_self = constants.%.Self.frozen.16f] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type.16b] +// CHECK:STDOUT: %.loc12_40.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.16b] +// CHECK:STDOUT: %.loc12_40.2: %Z.assoc_type.f4d = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%.Self.frozen.16f) [concrete = constants.%assoc0.169] // CHECK:STDOUT: %X.ref: %Z.assoc_type.f4d = name_ref X, %.loc12_40.2 [concrete = constants.%assoc0.169] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Z.lookup_impl_witness.46e, element0 [symbolic_self = constants.%impl.elem0.9ca] +// CHECK:STDOUT: %impl.elem0.loc12_40.1: type = impl_witness_access constants.%Z.lookup_impl_witness.9bf, element0 [symbolic_self = constants.%impl.elem0.b30] // CHECK:STDOUT: %T.ref.loc12_45: type = name_ref T, %T.loc12_15.1 [symbolic = %T.loc12_15.2 (constants.%T.67d)] -// CHECK:STDOUT: %.loc12_34: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.18c)] { -// CHECK:STDOUT: requirement_base_facet_type %Z.type -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %T.ref.loc12_45 +// CHECK:STDOUT: %rewrite.loc12_43.1 = requirement_rewrite %impl.elem0.loc12_40.1, %T.ref.loc12_45 [concrete] +// CHECK:STDOUT: %impl.elem0.loc12_40.2: type = impl_witness_access constants.%Z.lookup_impl_witness.e93, element0 [symbolic_self = constants.%impl.elem0.3ed] +// CHECK:STDOUT: %rewrite.loc12_43.2 = requirement_rewrite %impl.elem0.loc12_40.2, %T.ref.loc12_45 [concrete] +// CHECK:STDOUT: %.loc12_34: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.b22)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type [concrete] +// CHECK:STDOUT: %rewrite.loc12_43.2 = requirement_rewrite %impl.elem0.loc12_40.2, %T.ref.loc12_45 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc12_18.1: type = splice_block %.loc12_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc12_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc12_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc12_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc12_15.2 (constants.%T.67d)] @@ -672,7 +706,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %t.patt.loc14_17.1: @F.%pattern_type.loc14 (%pattern_type.d37) = at_binding_pattern t, %t.param_patt.loc14_17.1 [symbolic = %t.patt.loc14_17.2 (constants.%t.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_13: type = splice_block %Z.type [concrete = constants.%Z.type.963] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %Z.ref: %Z.type.c39 = name_ref Z, file.%Z.decl [concrete = constants.%Z.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %Z.type: type = facet_type <@Z, @Z(constants.%C)> [concrete = constants.%Z.type.963] @@ -729,28 +763,31 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @T.as.Z.impl.9ba(%T.loc10_15.1: type, %S.loc10_25.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl.447(%T.loc10_15.1: type, %S.loc10_25.1: type) { // CHECK:STDOUT: %T.patt.loc10_15.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_15.2 (constants.%T.patt.d47)] // CHECK:STDOUT: %T.loc10_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc10_15.2 (constants.%T.67d)] // CHECK:STDOUT: %S.patt.loc10_25.2: %pattern_type.98f = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc10_25.2 (constants.%S.patt)] // CHECK:STDOUT: %S.loc10_25.2: type = symbolic_binding S, 1 [symbolic = %S.loc10_25.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc10_42.2: type = facet_type <@Z, @Z(%S.loc10_25.2)> [symbolic = %Z.type.loc10_42.2 (constants.%Z.type.78b)] -// CHECK:STDOUT: %.Self.loc10_44.2: @T.as.Z.impl.9ba.%Z.type.loc10_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.loc10_44.2 (constants.%.Self.a97)] +// CHECK:STDOUT: %.Self.frozen.loc10_44.2: @T.as.Z.impl.447.%Z.type.loc10_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self.frozen.loc10_44.2 (constants.%.Self.frozen.e6b)] // CHECK:STDOUT: %require_complete.loc10_50: = require_complete_type %Z.type.loc10_42.2 [symbolic = %require_complete.loc10_50 (constants.%require_complete.291)] -// CHECK:STDOUT: %.Self.as_type.loc10_50.2: type = facet_access_type %.Self.loc10_44.2 [symbolic = %.Self.as_type.loc10_50.2 (constants.%.Self.as_type.120)] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc10_44.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.d9d)] // CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z, @Z(%S.loc10_25.2) [symbolic = %Z.assoc_type (constants.%Z.assoc_type.083)] -// CHECK:STDOUT: %assoc0: @T.as.Z.impl.9ba.%Z.assoc_type (%Z.assoc_type.083) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.c53)] -// CHECK:STDOUT: %Z.lookup_impl_witness: = lookup_impl_witness %.Self.loc10_44.2, @Z, @Z(%S.loc10_25.2) [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness.8c8)] -// CHECK:STDOUT: %impl.elem0.loc10_50.2: type = impl_witness_access %Z.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10_50.2 (constants.%impl.elem0.88a)] -// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc10_25.2) where %impl.elem0.loc10_50.2 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.ee4)] -// CHECK:STDOUT: %Z.impl_witness.loc10_58.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.9ba(%T.loc10_15.2, %S.loc10_25.2) [symbolic = %Z.impl_witness.loc10_58.2 (constants.%Z.impl_witness.cba)] +// CHECK:STDOUT: %assoc0: @T.as.Z.impl.447.%Z.assoc_type (%Z.assoc_type.083) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.c53)] +// CHECK:STDOUT: %Z.lookup_impl_witness.loc10_50.1: = lookup_impl_witness %.Self.frozen.loc10_44.2, @Z, @Z(%S.loc10_25.2) [symbolic = %Z.lookup_impl_witness.loc10_50.1 (constants.%Z.lookup_impl_witness.aff)] +// CHECK:STDOUT: %impl.elem0.loc10_50.3: type = impl_witness_access %Z.lookup_impl_witness.loc10_50.1, element0 [symbolic = %impl.elem0.loc10_50.3 (constants.%impl.elem0.4c0)] +// CHECK:STDOUT: %.Self: @T.as.Z.impl.447.%Z.type.loc10_42.2 (%Z.type.78b) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.6d3)] +// CHECK:STDOUT: %Z.lookup_impl_witness.loc10_50.2: = lookup_impl_witness %.Self, @Z, @Z(%S.loc10_25.2) [symbolic = %Z.lookup_impl_witness.loc10_50.2 (constants.%Z.lookup_impl_witness.d10)] +// CHECK:STDOUT: %impl.elem0.loc10_50.4: type = impl_witness_access %Z.lookup_impl_witness.loc10_50.2, element0 [symbolic = %impl.elem0.loc10_50.4 (constants.%impl.elem0.1d4)] +// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc10_25.2) where %impl.elem0.loc10_50.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.a2b)] +// CHECK:STDOUT: %Z.impl_witness.loc10_58.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.447(%T.loc10_15.2, %S.loc10_25.2) [symbolic = %Z.impl_witness.loc10_58.2 (constants.%Z.impl_witness.c0c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc10_44: = require_complete_type %Z_where.type [symbolic = %require_complete.loc10_44 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc10_44: = require_complete_type %Z_where.type [symbolic = %require_complete.loc10_44 (constants.%require_complete.9b7)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %.loc10_44 { -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.9ba [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc10_58.1: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.9ba(constants.%T.67d, constants.%S) [symbolic = %Z.impl_witness.loc10_58.2 (constants.%Z.impl_witness.cba)] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.447 [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc10_58.1: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.447(constants.%T.67d, constants.%S) [symbolic = %Z.impl_witness.loc10_58.2 (constants.%Z.impl_witness.c0c)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -759,18 +796,18 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic impl @T.as.Z.impl.61e(%T.loc12_15.1: type) { +// CHECK:STDOUT: generic impl @T.as.Z.impl.adf(%T.loc12_15.1: 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.9ca = %T.loc12_15.2> [symbolic = %Z_where.type (constants.%Z_where.type.18c)] -// CHECK:STDOUT: %Z.impl_witness.loc12_47.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.61e(%T.loc12_15.2) [symbolic = %Z.impl_witness.loc12_47.2 (constants.%Z.impl_witness.fc3)] +// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(constants.%C) where constants.%impl.elem0.3ed = %T.loc12_15.2> [symbolic = %Z_where.type (constants.%Z_where.type.b22)] +// CHECK:STDOUT: %Z.impl_witness.loc12_47.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.adf(%T.loc12_15.2) [symbolic = %Z.impl_witness.loc12_47.2 (constants.%Z.impl_witness.2d9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.9f7)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Z_where.type [symbolic = %require_complete (constants.%require_complete.d7e)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref.loc12_24 as %.loc12_34 { -// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.61e [concrete] -// CHECK:STDOUT: %Z.impl_witness.loc12_47.1: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.61e(constants.%T.67d) [symbolic = %Z.impl_witness.loc12_47.2 (constants.%Z.impl_witness.fc3)] +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.adf [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc12_47.1: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.adf(constants.%T.67d) [symbolic = %Z.impl_witness.loc12_47.2 (constants.%Z.impl_witness.2d9)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%T.67d [symbolic = %T.loc12_15.2 (constants.%T.67d)] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -857,31 +894,34 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %assoc0 => constants.%assoc0.c53 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%.Self.a97) { +// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%.Self.frozen.e6b) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%S // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083 // CHECK:STDOUT: %assoc0 => constants.%assoc0.c53 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @T.as.Z.impl.9ba(constants.%T.67d, constants.%S) { +// CHECK:STDOUT: specific @T.as.Z.impl.447(constants.%T.67d, constants.%S) { // CHECK:STDOUT: %T.patt.loc10_15.2 => constants.%T.patt.d47 // CHECK:STDOUT: %T.loc10_15.2 => constants.%T.67d // CHECK:STDOUT: %S.patt.loc10_25.2 => constants.%S.patt // CHECK:STDOUT: %S.loc10_25.2 => constants.%S // CHECK:STDOUT: %Z.type.loc10_42.2 => constants.%Z.type.78b -// CHECK:STDOUT: %.Self.loc10_44.2 => constants.%.Self.a97 +// CHECK:STDOUT: %.Self.frozen.loc10_44.2 => constants.%.Self.frozen.e6b // CHECK:STDOUT: %require_complete.loc10_50 => constants.%require_complete.291 -// CHECK:STDOUT: %.Self.as_type.loc10_50.2 => constants.%.Self.as_type.120 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.d9d // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083 // CHECK:STDOUT: %assoc0 => constants.%assoc0.c53 -// CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.lookup_impl_witness.8c8 -// CHECK:STDOUT: %impl.elem0.loc10_50.2 => constants.%impl.elem0.88a -// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.ee4 -// CHECK:STDOUT: %Z.impl_witness.loc10_58.2 => constants.%Z.impl_witness.cba +// CHECK:STDOUT: %Z.lookup_impl_witness.loc10_50.1 => constants.%Z.lookup_impl_witness.aff +// CHECK:STDOUT: %impl.elem0.loc10_50.3 => constants.%impl.elem0.4c0 +// CHECK:STDOUT: %.Self => constants.%.Self.6d3 +// CHECK:STDOUT: %Z.lookup_impl_witness.loc10_50.2 => constants.%Z.lookup_impl_witness.d10 +// CHECK:STDOUT: %impl.elem0.loc10_50.4 => constants.%impl.elem0.1d4 +// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.a2b +// CHECK:STDOUT: %Z.impl_witness.loc10_58.2 => constants.%Z.impl_witness.c0c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%Z.facet.952) { +// CHECK:STDOUT: specific @Z.WithSelf(constants.%S, constants.%Z.facet.96b) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%S // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.083 @@ -904,21 +944,21 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %assoc0 => constants.%assoc0.169 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%.Self.175) { +// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%.Self.frozen.16f) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%C // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.f4d // CHECK:STDOUT: %assoc0 => constants.%assoc0.169 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @T.as.Z.impl.61e(constants.%T.67d) { +// CHECK:STDOUT: specific @T.as.Z.impl.adf(constants.%T.67d) { // 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.18c -// CHECK:STDOUT: %Z.impl_witness.loc12_47.2 => constants.%Z.impl_witness.fc3 +// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.b22 +// CHECK:STDOUT: %Z.impl_witness.loc12_47.2 => constants.%Z.impl_witness.2d9 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%Z.facet.fa5) { +// CHECK:STDOUT: specific @Z.WithSelf(constants.%C, constants.%Z.facet.b21) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%C // CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.f4d @@ -949,30 +989,33 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.assoc_type: type = assoc_entity_type @Ptr [concrete] // CHECK:STDOUT: %assoc0.b1a: %Ptr.assoc_type = assoc_entity element0, @Ptr.WithSelf.%Type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U.patt.d47: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic] -// CHECK:STDOUT: %.Self.ffa: %Ptr.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ffa [symbolic_self] -// CHECK:STDOUT: %Ptr.lookup_impl_witness: = lookup_impl_witness %.Self.ffa, @Ptr [symbolic_self] -// CHECK:STDOUT: %impl.elem0.92c: type = impl_witness_access %Ptr.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.073: %Ptr.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.073 [symbolic_self] +// CHECK:STDOUT: %Ptr.lookup_impl_witness.2e6: = lookup_impl_witness %.Self.frozen.073, @Ptr [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a05: type = impl_witness_access %Ptr.lookup_impl_witness.2e6, element0 [symbolic_self] // CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %U.67d [symbolic] -// CHECK:STDOUT: %Ptr_where.type.71ffc3.1: type = facet_type <@Ptr where %impl.elem0.92c = %ptr.e8f8f9.1> [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.dc28c2.1: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] -// CHECK:STDOUT: %require_complete.15c7c4.1: = require_complete_type %Ptr_where.type.71ffc3.1 [symbolic] -// CHECK:STDOUT: %Ptr.facet.a52cb5.1: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.dc28c2.1) [symbolic] +// CHECK:STDOUT: %.Self: %Ptr.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Ptr.lookup_impl_witness.497: = lookup_impl_witness %.Self, @Ptr [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f33: type = impl_witness_access %Ptr.lookup_impl_witness.497, element0 [symbolic_self] +// CHECK:STDOUT: %Ptr_where.type.9d8e6c.1: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.e8f8f9.1> [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.add6fd.1: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] +// CHECK:STDOUT: %require_complete.2060e7.1: = require_complete_type %Ptr_where.type.9d8e6c.1 [symbolic] +// CHECK:STDOUT: %Ptr.facet.8eb510.1: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.add6fd.1) [symbolic] // 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: %pattern_type.51d: type = pattern_type %T.67d [symbolic] // CHECK:STDOUT: %t.patt: %pattern_type.51d = ref_binding_pattern t [symbolic] // 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.71ffc3.2: type = facet_type <@Ptr where %impl.elem0.92c = %ptr.e8f8f9.2> [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.dc28c2.2: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %require_complete.15c7c4.2: = require_complete_type %Ptr_where.type.71ffc3.2 [symbolic] -// CHECK:STDOUT: %.e08: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %Ptr.facet.a52cb5.2: %Ptr.type = facet_value %T.67d, (%Ptr.impl_witness.dc28c2.2) [symbolic] +// CHECK:STDOUT: %Ptr_where.type.9d8e6c.2: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.e8f8f9.2> [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.add6fd.2: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %require_complete.2060e7.2: = require_complete_type %Ptr_where.type.9d8e6c.2 [symbolic] +// CHECK:STDOUT: %.6a8: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %Ptr.facet.8eb510.2: %Ptr.type = facet_value %T.67d, (%Ptr.impl_witness.add6fd.2) [symbolic] // CHECK:STDOUT: %.cb6: Core.Form = init_form %ptr.e8f8f9.2 [symbolic] // CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f8f9.2 [symbolic] // CHECK:STDOUT: %return.param_patt.27f: %pattern_type.4f4 = out_param_pattern [symbolic] @@ -1013,20 +1056,24 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc7_30: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %Ptr.ref: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] -// CHECK:STDOUT: %.Self.loc7_39: %Ptr.type = symbolic_binding .Self [symbolic_self = constants.%.Self.ffa] -// CHECK:STDOUT: %.Self.ref: %Ptr.type = name_ref .Self, %.Self.loc7_39 [symbolic_self = constants.%.Self.ffa] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc7_45: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc7_39: %Ptr.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.073] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %Ptr.type = name_ref .Self, %.Self.frozen.loc7_39 [symbolic_self = constants.%.Self.frozen.073] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc7_45: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Ptr.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.92c] +// CHECK:STDOUT: %impl.elem0.loc7_45.1: type = impl_witness_access constants.%Ptr.lookup_impl_witness.2e6, element0 [symbolic_self = constants.%impl.elem0.a05] // CHECK:STDOUT: %U.ref.loc7_53: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_54.1: type = ptr_type %U.ref.loc7_53 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.71ffc3.1)] { -// CHECK:STDOUT: requirement_base_facet_type %Ptr.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %ptr.loc7_54.1 +// CHECK:STDOUT: %rewrite.loc7_51.1 = requirement_rewrite %impl.elem0.loc7_45.1, %ptr.loc7_54.1 [concrete] +// CHECK:STDOUT: %impl.elem0.loc7_45.2: type = impl_witness_access constants.%Ptr.lookup_impl_witness.497, element0 [symbolic_self = constants.%impl.elem0.f33] +// CHECK:STDOUT: %rewrite.loc7_51.2 = requirement_rewrite %impl.elem0.loc7_45.2, %ptr.loc7_54.1 [concrete] +// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8e6c.1)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] +// CHECK:STDOUT: %rewrite.loc7_51.2 = requirement_rewrite %impl.elem0.loc7_45.2, %ptr.loc7_54.1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7_24.1: type = splice_block %.loc7_24.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc7_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc7_24.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_21.1: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] @@ -1041,12 +1088,12 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.ref.loc9_29: type = name_ref T, %T.loc9_7.2 [symbolic = %T.loc9_7.1 (constants.%T.67d)] // CHECK:STDOUT: %Ptr.ref: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a] -// CHECK:STDOUT: %Ptr.facet.loc9_30.2: %Ptr.type = facet_value %T.ref.loc9_29, (constants.%Ptr.impl_witness.dc28c2.2) [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet.a52cb5.2)] -// CHECK:STDOUT: %.loc9_30.3: %Ptr.type = converted %T.ref.loc9_29, %Ptr.facet.loc9_30.2 [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet.a52cb5.2)] -// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.dc28c2.2, element0 [symbolic = %ptr (constants.%ptr.e8f8f9.2)] +// CHECK:STDOUT: %Ptr.facet.loc9_30.2: %Ptr.type = facet_value %T.ref.loc9_29, (constants.%Ptr.impl_witness.add6fd.2) [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet.8eb510.2)] +// CHECK:STDOUT: %.loc9_30.3: %Ptr.type = converted %T.ref.loc9_29, %Ptr.facet.loc9_30.2 [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet.8eb510.2)] +// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.add6fd.2, element0 [symbolic = %ptr (constants.%ptr.e8f8f9.2)] // CHECK:STDOUT: %.loc9_30.4: Core.Form = init_form %impl.elem0.loc9 [symbolic = %.loc9_30.2 (constants.%.cb6)] // CHECK:STDOUT: %.loc9_10.1: type = splice_block %.loc9_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc9_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc9_7.1 (constants.%T.67d)] @@ -1081,15 +1128,15 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.d47)] // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_54.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.92c = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.71ffc3.1)] -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.dc28c2.1)] +// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.f33 = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8e6c.1)] +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.add6fd.1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.15c7c4.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.2060e7.1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %U.ref.loc7_30 as %.loc7_39 { // CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.dc28c2.1)] +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.add6fd.1)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -1104,9 +1151,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %pattern_type.loc9_21: type = pattern_type %T.loc9_7.1 [symbolic = %pattern_type.loc9_21 (constants.%pattern_type.51d)] // CHECK:STDOUT: %t.patt.loc9_21.2: @F.%pattern_type.loc9_21 (%pattern_type.51d) = ref_binding_pattern t [symbolic = %t.patt.loc9_21.2 (constants.%t.patt)] // CHECK:STDOUT: %t.param_patt.loc9_16.2: @F.%pattern_type.loc9_21 (%pattern_type.51d) = var_param_pattern %t.patt.loc9_21.2 [symbolic = %t.param_patt.loc9_16.2 (constants.%t.param_patt)] -// CHECK:STDOUT: %.loc9_30.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.loc9_7.1) [symbolic = %.loc9_30.1 (constants.%.e08)] -// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.loc9_7.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.dc28c2.2)] -// CHECK:STDOUT: %Ptr.facet.loc9_30.1: %Ptr.type = facet_value %T.loc9_7.1, (%Ptr.impl_witness) [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet.a52cb5.2)] +// CHECK:STDOUT: %.loc9_30.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.loc9_7.1) [symbolic = %.loc9_30.1 (constants.%.6a8)] +// CHECK:STDOUT: %Ptr.impl_witness: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.loc9_7.1) [symbolic = %Ptr.impl_witness (constants.%Ptr.impl_witness.add6fd.2)] +// CHECK:STDOUT: %Ptr.facet.loc9_30.1: %Ptr.type = facet_value %T.loc9_7.1, (%Ptr.impl_witness) [symbolic = %Ptr.facet.loc9_30.1 (constants.%Ptr.facet.8eb510.2)] // CHECK:STDOUT: %ptr: type = ptr_type %T.loc9_7.1 [symbolic = %ptr (constants.%ptr.e8f8f9.2)] // CHECK:STDOUT: %.loc9_30.2: Core.Form = init_form %ptr [symbolic = %.loc9_30.2 (constants.%.cb6)] // CHECK:STDOUT: %pattern_type.loc9_30: type = pattern_type %ptr [symbolic = %pattern_type.loc9_30 (constants.%pattern_type.4f4)] @@ -1147,7 +1194,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%.Self.ffa) { +// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%.Self.frozen.073) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1155,11 +1202,11 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47 // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.e8f8f9.1 -// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.71ffc3.1 -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.dc28c2.1 +// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.9d8e6c.1 +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.add6fd.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet.a52cb5.1) { +// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet.8eb510.1) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1167,14 +1214,14 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47 // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.67d // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.e8f8f9.2 -// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.71ffc3.2 -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.dc28c2.2 +// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.9d8e6c.2 +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.add6fd.2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.15c7c4.2 +// CHECK:STDOUT: %require_complete => constants.%require_complete.2060e7.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet.a52cb5.2) { +// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet.8eb510.2) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1184,9 +1231,9 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %pattern_type.loc9_21 => constants.%pattern_type.51d // CHECK:STDOUT: %t.patt.loc9_21.2 => constants.%t.patt // CHECK:STDOUT: %t.param_patt.loc9_16.2 => constants.%t.param_patt -// CHECK:STDOUT: %.loc9_30.1 => constants.%.e08 -// CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.dc28c2.2 -// CHECK:STDOUT: %Ptr.facet.loc9_30.1 => constants.%Ptr.facet.a52cb5.2 +// CHECK:STDOUT: %.loc9_30.1 => constants.%.6a8 +// CHECK:STDOUT: %Ptr.impl_witness => constants.%Ptr.impl_witness.add6fd.2 +// CHECK:STDOUT: %Ptr.facet.loc9_30.1 => constants.%Ptr.facet.8eb510.2 // CHECK:STDOUT: %ptr => constants.%ptr.e8f8f9.2 // CHECK:STDOUT: %.loc9_30.2 => constants.%.cb6 // CHECK:STDOUT: %pattern_type.loc9_30 => constants.%pattern_type.4f4 @@ -1202,19 +1249,22 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.assoc_type: type = assoc_entity_type @Ptr [concrete] // CHECK:STDOUT: %assoc0.b1a: %Ptr.assoc_type = assoc_entity element0, @Ptr.WithSelf.%Type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U.patt.d47: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic] -// CHECK:STDOUT: %.Self.ffa: %Ptr.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ffa [symbolic_self] -// CHECK:STDOUT: %Ptr.lookup_impl_witness: = lookup_impl_witness %.Self.ffa, @Ptr [symbolic_self] -// CHECK:STDOUT: %impl.elem0.92c: type = impl_witness_access %Ptr.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.073: %Ptr.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.073 [symbolic_self] +// CHECK:STDOUT: %Ptr.lookup_impl_witness.2e6: = lookup_impl_witness %.Self.frozen.073, @Ptr [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a05: type = impl_witness_access %Ptr.lookup_impl_witness.2e6, element0 [symbolic_self] // CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %U.67d [symbolic] -// CHECK:STDOUT: %Ptr_where.type.71f: type = facet_type <@Ptr where %impl.elem0.92c = %ptr.e8f8f9.1> [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.dc2: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] -// CHECK:STDOUT: %require_complete.15c: = require_complete_type %Ptr_where.type.71f [symbolic] -// CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.dc2) [symbolic] +// CHECK:STDOUT: %.Self: %Ptr.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Ptr.lookup_impl_witness.497: = lookup_impl_witness %.Self, @Ptr [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f33: type = impl_witness_access %Ptr.lookup_impl_witness.497, element0 [symbolic_self] +// CHECK:STDOUT: %Ptr_where.type.9d8: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.e8f8f9.1> [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.add: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] +// CHECK:STDOUT: %require_complete.206: = require_complete_type %Ptr_where.type.9d8 [symbolic] +// CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.add) [symbolic] // CHECK:STDOUT: %pattern_type.f5d: type = pattern_type %Ptr.type [concrete] // CHECK:STDOUT: %T.patt.a2e: %pattern_type.f5d = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.76f: %Ptr.type = symbolic_binding T, 0 [symbolic] @@ -1223,10 +1273,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %t.patt: %pattern_type.756 = ref_binding_pattern t [symbolic] // 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.928: type = facet_type <@Ptr where %impl.elem0.92c = %ptr.ac4> [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.668: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic] -// CHECK:STDOUT: %require_complete.92e: = require_complete_type %Ptr_where.type.928 [symbolic] -// CHECK:STDOUT: %.184: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.468) [symbolic] +// CHECK:STDOUT: %Ptr_where.type.a29: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.ac4> [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.e33: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic] +// CHECK:STDOUT: %require_complete.d44: = require_complete_type %Ptr_where.type.a29 [symbolic] +// CHECK:STDOUT: %.14a: 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] // CHECK:STDOUT: %pattern_type.f62: type = pattern_type %ptr.ac4 [symbolic] // CHECK:STDOUT: %return.param_patt.b93: %pattern_type.f62 = out_param_pattern [symbolic] @@ -1267,20 +1317,24 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc7_30: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %Ptr.ref: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] -// CHECK:STDOUT: %.Self.loc7_39: %Ptr.type = symbolic_binding .Self [symbolic_self = constants.%.Self.ffa] -// CHECK:STDOUT: %.Self.ref: %Ptr.type = name_ref .Self, %.Self.loc7_39 [symbolic_self = constants.%.Self.ffa] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc7_45: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc7_39: %Ptr.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.073] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %Ptr.type = name_ref .Self, %.Self.frozen.loc7_39 [symbolic_self = constants.%.Self.frozen.073] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc7_45: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Ptr.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.92c] +// CHECK:STDOUT: %impl.elem0.loc7_45.1: type = impl_witness_access constants.%Ptr.lookup_impl_witness.2e6, element0 [symbolic_self = constants.%impl.elem0.a05] // CHECK:STDOUT: %U.ref.loc7_53: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_54.1: type = ptr_type %U.ref.loc7_53 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.71f)] { -// CHECK:STDOUT: requirement_base_facet_type %Ptr.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %ptr.loc7_54.1 +// CHECK:STDOUT: %rewrite.loc7_51.1 = requirement_rewrite %impl.elem0.loc7_45.1, %ptr.loc7_54.1 [concrete] +// CHECK:STDOUT: %impl.elem0.loc7_45.2: type = impl_witness_access constants.%Ptr.lookup_impl_witness.497, element0 [symbolic_self = constants.%impl.elem0.f33] +// CHECK:STDOUT: %rewrite.loc7_51.2 = requirement_rewrite %impl.elem0.loc7_45.2, %ptr.loc7_54.1 [concrete] +// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] +// CHECK:STDOUT: %rewrite.loc7_51.2 = requirement_rewrite %impl.elem0.loc7_45.2, %ptr.loc7_54.1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7_24.1: type = splice_block %.loc7_24.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc7_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc7_24.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_21.1: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] @@ -1296,10 +1350,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.as_type.loc9_29: type = facet_access_type %T.ref.loc9_28 [symbolic = %T.as_type.loc9_22.1 (constants.%T.as_type.468)] // CHECK:STDOUT: %.loc9_29.3: type = converted %T.ref.loc9_28, %T.as_type.loc9_29 [symbolic = %T.as_type.loc9_22.1 (constants.%T.as_type.468)] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a] -// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.668, element0 [symbolic = %ptr (constants.%ptr.ac4)] +// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.e33, element0 [symbolic = %ptr (constants.%ptr.ac4)] // CHECK:STDOUT: %.loc9_29.4: Core.Form = init_form %impl.elem0.loc9 [symbolic = %.loc9_29.2 (constants.%.e16)] // CHECK:STDOUT: %.loc9_10: type = splice_block %Ptr.ref [concrete = constants.%Ptr.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %Ptr.ref: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_7.2: %Ptr.type = symbolic_binding T, 0 [symbolic = %T.loc9_7.1 (constants.%T.76f)] @@ -1338,15 +1392,15 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.d47)] // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_54.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.92c = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.71f)] -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.dc2)] +// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.f33 = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8)] +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.add)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.15c)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.206)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %U.ref.loc7_30 as %.loc7_39 { // CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.dc2)] +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.add)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -1362,7 +1416,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %pattern_type.loc9_20: type = pattern_type %T.as_type.loc9_22.1 [symbolic = %pattern_type.loc9_20 (constants.%pattern_type.756)] // CHECK:STDOUT: %t.patt.loc9_20.2: @F.%pattern_type.loc9_20 (%pattern_type.756) = ref_binding_pattern t [symbolic = %t.patt.loc9_20.2 (constants.%t.patt)] // CHECK:STDOUT: %t.param_patt.loc9_15.2: @F.%pattern_type.loc9_20 (%pattern_type.756) = var_param_pattern %t.patt.loc9_20.2 [symbolic = %t.param_patt.loc9_15.2 (constants.%t.param_patt)] -// CHECK:STDOUT: %.loc9_29.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.loc9_22.1) [symbolic = %.loc9_29.1 (constants.%.184)] +// CHECK:STDOUT: %.loc9_29.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.loc9_22.1) [symbolic = %.loc9_29.1 (constants.%.14a)] // CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc9_22.1 [symbolic = %ptr (constants.%ptr.ac4)] // CHECK:STDOUT: %.loc9_29.2: Core.Form = init_form %ptr [symbolic = %.loc9_29.2 (constants.%.e16)] // CHECK:STDOUT: %pattern_type.loc9_29: type = pattern_type %ptr [symbolic = %pattern_type.loc9_29 (constants.%pattern_type.f62)] @@ -1403,7 +1457,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%.Self.ffa) { +// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%.Self.frozen.073) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1411,8 +1465,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47 // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.e8f8f9.1 -// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.71f -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.dc2 +// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.9d8 +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.add // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet) { @@ -1427,11 +1481,11 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47 // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.as_type.468 // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.ac4 -// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.928 -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.668 +// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.a29 +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.e33 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.92e +// CHECK:STDOUT: %require_complete => constants.%require_complete.d44 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T.76f) { @@ -1441,7 +1495,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %pattern_type.loc9_20 => constants.%pattern_type.756 // CHECK:STDOUT: %t.patt.loc9_20.2 => constants.%t.patt // CHECK:STDOUT: %t.param_patt.loc9_15.2 => constants.%t.param_patt -// CHECK:STDOUT: %.loc9_29.1 => constants.%.184 +// CHECK:STDOUT: %.loc9_29.1 => constants.%.14a // CHECK:STDOUT: %ptr => constants.%ptr.ac4 // CHECK:STDOUT: %.loc9_29.2 => constants.%.e16 // CHECK:STDOUT: %pattern_type.loc9_29 => constants.%pattern_type.f62 @@ -1457,19 +1511,22 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Ptr.assoc_type: type = assoc_entity_type @Ptr [concrete] // CHECK:STDOUT: %assoc0.b1a: %Ptr.assoc_type = assoc_entity element0, @Ptr.WithSelf.%Type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U.patt.d47: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U.67d: type = symbolic_binding U, 0 [symbolic] -// CHECK:STDOUT: %.Self.ffa: %Ptr.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ffa [symbolic_self] -// CHECK:STDOUT: %Ptr.lookup_impl_witness: = lookup_impl_witness %.Self.ffa, @Ptr [symbolic_self] -// CHECK:STDOUT: %impl.elem0.92c: type = impl_witness_access %Ptr.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.073: %Ptr.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.073 [symbolic_self] +// CHECK:STDOUT: %Ptr.lookup_impl_witness.2e6: = lookup_impl_witness %.Self.frozen.073, @Ptr [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a05: type = impl_witness_access %Ptr.lookup_impl_witness.2e6, element0 [symbolic_self] // CHECK:STDOUT: %ptr.e8f8f9.1: type = ptr_type %U.67d [symbolic] -// CHECK:STDOUT: %Ptr_where.type.71f: type = facet_type <@Ptr where %impl.elem0.92c = %ptr.e8f8f9.1> [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.dc2: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] -// CHECK:STDOUT: %require_complete.15c: = require_complete_type %Ptr_where.type.71f [symbolic] -// CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.dc2) [symbolic] +// CHECK:STDOUT: %.Self: %Ptr.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Ptr.lookup_impl_witness.497: = lookup_impl_witness %.Self, @Ptr [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f33: type = impl_witness_access %Ptr.lookup_impl_witness.497, element0 [symbolic_self] +// CHECK:STDOUT: %Ptr_where.type.9d8: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.e8f8f9.1> [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.add: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%U.67d) [symbolic] +// CHECK:STDOUT: %require_complete.206: = require_complete_type %Ptr_where.type.9d8 [symbolic] +// CHECK:STDOUT: %Ptr.facet: %Ptr.type = facet_value %U.67d, (%Ptr.impl_witness.add) [symbolic] // CHECK:STDOUT: %pattern_type.f5d: type = pattern_type %Ptr.type [concrete] // CHECK:STDOUT: %T.patt.a2e: %pattern_type.f5d = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.76f: %Ptr.type = symbolic_binding T, 0 [symbolic] @@ -1478,10 +1535,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %t.patt: %pattern_type.756 = ref_binding_pattern t [symbolic] // 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.928: type = facet_type <@Ptr where %impl.elem0.92c = %ptr.ac4> [symbolic] -// CHECK:STDOUT: %Ptr.impl_witness.668: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic] -// CHECK:STDOUT: %require_complete.92e: = require_complete_type %Ptr_where.type.928 [symbolic] -// CHECK:STDOUT: %.184: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.468) [symbolic] +// CHECK:STDOUT: %Ptr_where.type.a29: type = facet_type <@Ptr where %impl.elem0.f33 = %ptr.ac4> [symbolic] +// CHECK:STDOUT: %Ptr.impl_witness.e33: = impl_witness @U.as.Ptr.impl.%Ptr.impl_witness_table, @U.as.Ptr.impl(%T.as_type.468) [symbolic] +// CHECK:STDOUT: %require_complete.d44: = require_complete_type %Ptr_where.type.a29 [symbolic] +// CHECK:STDOUT: %.14a: 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] // CHECK:STDOUT: %pattern_type.f62: type = pattern_type %ptr.ac4 [symbolic] // CHECK:STDOUT: %return.param_patt.b93: %pattern_type.f62 = out_param_pattern [symbolic] @@ -1522,20 +1579,24 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc7_30: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %Ptr.ref: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] -// CHECK:STDOUT: %.Self.loc7_39: %Ptr.type = symbolic_binding .Self [symbolic_self = constants.%.Self.ffa] -// CHECK:STDOUT: %.Self.ref: %Ptr.type = name_ref .Self, %.Self.loc7_39 [symbolic_self = constants.%.Self.ffa] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc7_45: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc7_39: %Ptr.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.073] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %Ptr.type = name_ref .Self, %.Self.frozen.loc7_39 [symbolic_self = constants.%.Self.frozen.073] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc7_45: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Ptr.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0.92c] +// CHECK:STDOUT: %impl.elem0.loc7_45.1: type = impl_witness_access constants.%Ptr.lookup_impl_witness.2e6, element0 [symbolic_self = constants.%impl.elem0.a05] // CHECK:STDOUT: %U.ref.loc7_53: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_54.1: type = ptr_type %U.ref.loc7_53 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.71f)] { -// CHECK:STDOUT: requirement_base_facet_type %Ptr.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %ptr.loc7_54.1 +// CHECK:STDOUT: %rewrite.loc7_51.1 = requirement_rewrite %impl.elem0.loc7_45.1, %ptr.loc7_54.1 [concrete] +// CHECK:STDOUT: %impl.elem0.loc7_45.2: type = impl_witness_access constants.%Ptr.lookup_impl_witness.497, element0 [symbolic_self = constants.%impl.elem0.f33] +// CHECK:STDOUT: %rewrite.loc7_51.2 = requirement_rewrite %impl.elem0.loc7_45.2, %ptr.loc7_54.1 [concrete] +// CHECK:STDOUT: %.loc7_39: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] +// CHECK:STDOUT: %rewrite.loc7_51.2 = requirement_rewrite %impl.elem0.loc7_45.2, %ptr.loc7_54.1 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7_24.1: type = splice_block %.loc7_24.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc7_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc7_24.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_21.1: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] @@ -1550,10 +1611,10 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %T.ref.loc9_28: %Ptr.type = name_ref T, %T.loc9_7.2 [symbolic = %T.loc9_7.1 (constants.%T.76f)] // CHECK:STDOUT: %Ptr.ref.loc9_31: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] // CHECK:STDOUT: %Type.ref: %Ptr.assoc_type = name_ref Type, @Type.%assoc0 [concrete = constants.%assoc0.b1a] -// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.668, element0 [symbolic = %ptr (constants.%ptr.ac4)] +// CHECK:STDOUT: %impl.elem0.loc9: type = impl_witness_access constants.%Ptr.impl_witness.e33, element0 [symbolic = %ptr (constants.%ptr.ac4)] // CHECK:STDOUT: %.loc9_29.3: Core.Form = init_form %impl.elem0.loc9 [symbolic = %.loc9_29.2 (constants.%.e16)] // CHECK:STDOUT: %.loc9_10: type = splice_block %Ptr.ref.loc9_10 [concrete = constants.%Ptr.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %Ptr.ref.loc9_10: type = name_ref Ptr, file.%Ptr.decl [concrete = constants.%Ptr.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_7.2: %Ptr.type = symbolic_binding T, 0 [symbolic = %T.loc9_7.1 (constants.%T.76f)] @@ -1592,15 +1653,15 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.98f = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.d47)] // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] // CHECK:STDOUT: %ptr.loc7_54.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.92c = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.71f)] -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.dc2)] +// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.f33 = %ptr.loc7_54.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.9d8)] +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.add)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.15c)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Ptr_where.type [symbolic = %require_complete (constants.%require_complete.206)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %U.ref.loc7_30 as %.loc7_39 { // CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.dc2)] +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_56.2 (constants.%Ptr.impl_witness.add)] // CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_54.2 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -1616,7 +1677,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %pattern_type.loc9_20: type = pattern_type %T.as_type.loc9_22.1 [symbolic = %pattern_type.loc9_20 (constants.%pattern_type.756)] // CHECK:STDOUT: %t.patt.loc9_20.2: @F.%pattern_type.loc9_20 (%pattern_type.756) = ref_binding_pattern t [symbolic = %t.patt.loc9_20.2 (constants.%t.patt)] // CHECK:STDOUT: %t.param_patt.loc9_15.2: @F.%pattern_type.loc9_20 (%pattern_type.756) = var_param_pattern %t.patt.loc9_20.2 [symbolic = %t.param_patt.loc9_15.2 (constants.%t.param_patt)] -// CHECK:STDOUT: %.loc9_29.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.loc9_22.1) [symbolic = %.loc9_29.1 (constants.%.184)] +// CHECK:STDOUT: %.loc9_29.1: require_specific_def_type = require_specific_def @U.as.Ptr.impl(%T.as_type.loc9_22.1) [symbolic = %.loc9_29.1 (constants.%.14a)] // CHECK:STDOUT: %ptr: type = ptr_type %T.as_type.loc9_22.1 [symbolic = %ptr (constants.%ptr.ac4)] // CHECK:STDOUT: %.loc9_29.2: Core.Form = init_form %ptr [symbolic = %.loc9_29.2 (constants.%.e16)] // CHECK:STDOUT: %pattern_type.loc9_29: type = pattern_type %ptr [symbolic = %pattern_type.loc9_29 (constants.%pattern_type.f62)] @@ -1657,7 +1718,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%.Self.ffa) { +// CHECK:STDOUT: specific @Ptr.WithSelf(constants.%.Self.frozen.073) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1665,8 +1726,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47 // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.e8f8f9.1 -// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.71f -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.dc2 +// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.9d8 +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.add // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Ptr.WithSelf(constants.%Ptr.facet) { @@ -1677,11 +1738,11 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.d47 // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.as_type.468 // CHECK:STDOUT: %ptr.loc7_54.2 => constants.%ptr.ac4 -// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.928 -// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.668 +// CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.a29 +// CHECK:STDOUT: %Ptr.impl_witness.loc7_56.2 => constants.%Ptr.impl_witness.e33 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.92e +// CHECK:STDOUT: %require_complete => constants.%require_complete.d44 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Ptr.WithSelf(constants.%T.76f) { @@ -1695,7 +1756,7 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %pattern_type.loc9_20 => constants.%pattern_type.756 // CHECK:STDOUT: %t.patt.loc9_20.2 => constants.%t.patt // CHECK:STDOUT: %t.param_patt.loc9_15.2 => constants.%t.param_patt -// CHECK:STDOUT: %.loc9_29.1 => constants.%.184 +// CHECK:STDOUT: %.loc9_29.1 => constants.%.14a // CHECK:STDOUT: %ptr => constants.%ptr.ac4 // CHECK:STDOUT: %.loc9_29.2 => constants.%.e16 // CHECK:STDOUT: %pattern_type.loc9_29 => constants.%pattern_type.f62 diff --git a/toolchain/check/testdata/impl/lookup/specific_args.carbon b/toolchain/check/testdata/impl/lookup/specific_args.carbon index a15cc9d37c32..759809d2e62b 100644 --- a/toolchain/check/testdata/impl/lookup/specific_args.carbon +++ b/toolchain/check/testdata/impl/lookup/specific_args.carbon @@ -60,7 +60,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -94,7 +94,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] @@ -103,7 +103,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt.loc5_10.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_13.1: type = splice_block %.loc5_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_10.1 (constants.%T)] diff --git a/toolchain/check/testdata/impl/use_assoc_entity.carbon b/toolchain/check/testdata/impl/use_assoc_entity.carbon index 4c9c55c959b2..01f1fbd715c5 100644 --- a/toolchain/check/testdata/impl/use_assoc_entity.carbon +++ b/toolchain/check/testdata/impl/use_assoc_entity.carbon @@ -509,13 +509,13 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %J.WithSelf.F.f69: %J.WithSelf.F.type.a0a = struct_value () [symbolic] // CHECK:STDOUT: %assoc1.413: %J.assoc_type = assoc_entity element1, @J.WithSelf.%J.WithSelf.F.decl [concrete] -// CHECK:STDOUT: %.Self.d2f: %J.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %J.WithSelf.F.type.fe4: type = fn_type @J.WithSelf.F, @J.WithSelf(%.Self.d2f) [symbolic_self] -// CHECK:STDOUT: %J.WithSelf.F.839: %J.WithSelf.F.type.fe4 = struct_value () [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %J.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %J.WithSelf.F.type.885: type = fn_type @J.WithSelf.F, @J.WithSelf(%.Self.frozen) [symbolic_self] +// CHECK:STDOUT: %J.WithSelf.F.76e: %J.WithSelf.F.type.885 = struct_value () [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %J.impl_witness.a18: = impl_witness @empty_tuple.type.as.J.impl.%J.impl_witness_table [concrete] +// CHECK:STDOUT: %J.impl_witness.280: = impl_witness @empty_tuple.type.as.J.impl.%J.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] // CHECK:STDOUT: %self.patt.8c1: %pattern_type.cb1 = at_binding_pattern self, %self.param_patt.154 [concrete] @@ -527,20 +527,20 @@ fn F() { // 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] // CHECK:STDOUT: %empty_tuple.type.as.J.impl.F: %empty_tuple.type.as.J.impl.F.type = struct_value () [concrete] -// CHECK:STDOUT: %J.facet.7f4: %J.type = facet_value %empty_tuple.type, (%J.impl_witness.a18) [concrete] -// CHECK:STDOUT: %J.WithSelf.F.type.23c: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet.7f4) [concrete] -// CHECK:STDOUT: %J.WithSelf.F.bc0: %J.WithSelf.F.type.23c = struct_value () [concrete] +// CHECK:STDOUT: %J.facet.2b9: %J.type = facet_value %empty_tuple.type, (%J.impl_witness.280) [concrete] +// CHECK:STDOUT: %J.WithSelf.F.type.9eb: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet.2b9) [concrete] +// CHECK:STDOUT: %J.WithSelf.F.cf7: %J.WithSelf.F.type.9eb = struct_value () [concrete] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] -// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.454: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%N) [symbolic] -// CHECK:STDOUT: %Int.as.Negate.impl.Op.90a: %Int.as.Negate.impl.Op.type.454 = struct_value () [symbolic] -// CHECK:STDOUT: %Negate.impl_witness.3c4: = impl_witness imports.%Negate.impl_witness_table, @Int.as.Negate.impl(%int_32) [concrete] -// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.144: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%int_32) [concrete] -// CHECK:STDOUT: %Int.as.Negate.impl.Op.246: %Int.as.Negate.impl.Op.type.144 = struct_value () [concrete] -// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.3c4) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.0c8: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.435: type = fn_type_with_self_type %Negate.WithSelf.Op.type.0c8, %Negate.facet [concrete] -// CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: = specific_function %Int.as.Negate.impl.Op.246, @Int.as.Negate.impl.Op(%int_32) [concrete] -// CHECK:STDOUT: %.571: type = fn_type_with_self_type %J.WithSelf.F.type.23c, %J.facet.7f4 [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.947: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%N) [symbolic] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.d40: %Int.as.Negate.impl.Op.type.947 = struct_value () [symbolic] +// CHECK:STDOUT: %Negate.impl_witness.268: = impl_witness imports.%Negate.impl_witness_table, @Int.as.Negate.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.type.81d: type = fn_type @Int.as.Negate.impl.Op, @Int.as.Negate.impl(%int_32) [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.0f5: %Int.as.Negate.impl.Op.type.81d = struct_value () [concrete] +// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %i32, (%Negate.impl_witness.268) [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.ab0: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.1840: type = fn_type_with_self_type %Negate.WithSelf.Op.type.ab0, %Negate.facet [concrete] +// CHECK:STDOUT: %Int.as.Negate.impl.Op.specific_fn: = specific_function %Int.as.Negate.impl.Op.0f5, @Int.as.Negate.impl.Op(%int_32) [concrete] +// CHECK:STDOUT: %.20f: type = fn_type_with_self_type %J.WithSelf.F.type.9eb, %J.facet.2b9 [concrete] // CHECK:STDOUT: %int_40.f80: Core.IntLiteral = int_value 40 [concrete] // CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] @@ -559,7 +559,7 @@ fn F() { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %J.impl_witness.aa2: = impl_witness @C.as.J.impl.%J.impl_witness_table [concrete] +// CHECK:STDOUT: %J.impl_witness.26d: = impl_witness @C.as.J.impl.%J.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] // CHECK:STDOUT: %self.patt.49a: %pattern_type.98b = at_binding_pattern self, %self.param_patt.303 [concrete] @@ -570,16 +570,16 @@ fn F() { // CHECK:STDOUT: %return.patt.e4a: %pattern_type.98b = return_slot_pattern %return.param_patt.89a, %C [concrete] // CHECK:STDOUT: %C.as.J.impl.F.type: type = fn_type @C.as.J.impl.F [concrete] // CHECK:STDOUT: %C.as.J.impl.F: %C.as.J.impl.F.type = struct_value () [concrete] -// CHECK:STDOUT: %J.facet.9f1: %J.type = facet_value %C, (%J.impl_witness.aa2) [concrete] -// CHECK:STDOUT: %J.WithSelf.F.type.4e8: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet.9f1) [concrete] -// CHECK:STDOUT: %J.WithSelf.F.39b: %J.WithSelf.F.type.4e8 = struct_value () [concrete] +// CHECK:STDOUT: %J.facet.0ec: %J.type = facet_value %C, (%J.impl_witness.26d) [concrete] +// CHECK:STDOUT: %J.WithSelf.F.type.125: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet.0ec) [concrete] +// CHECK:STDOUT: %J.WithSelf.F.b33: %J.WithSelf.F.type.125 = struct_value () [concrete] // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.b4f = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.c60: @Int.as.Negate.impl.%Int.as.Negate.impl.Op.type (%Int.as.Negate.impl.Op.type.454) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Negate.impl.%Int.as.Negate.impl.Op (constants.%Int.as.Negate.impl.Op.90a)] -// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.b4f, %Core.import_ref.c60), @Int.as.Negate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.aa2: @Int.as.Negate.impl.%Int.as.Negate.impl.Op.type (%Int.as.Negate.impl.Op.type.947) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Negate.impl.%Int.as.Negate.impl.Op (constants.%Int.as.Negate.impl.Op.d40)] +// CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.b4f, %Core.import_ref.aa2), @Int.as.Negate.impl [concrete] // CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/parts/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.b3c = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } @@ -708,7 +708,7 @@ fn F() { // CHECK:STDOUT: fn @empty_tuple.type.as.J.impl.F(%self.param: %empty_tuple.type, %u.param: %i32) -> out %return.param: %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: %i32 = name_ref u, %u -// CHECK:STDOUT: %impl.elem1: %.435 = impl_witness_access constants.%Negate.impl_witness.3c4, element1 [concrete = constants.%Int.as.Negate.impl.Op.246] +// CHECK:STDOUT: %impl.elem1: %.1840 = impl_witness_access constants.%Negate.impl_witness.268, element1 [concrete = constants.%Int.as.Negate.impl.Op.0f5] // CHECK:STDOUT: %bound_method.loc12_45.1: = bound_method %u.ref, %impl.elem1 // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem1, @Int.as.Negate.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Negate.impl.Op.specific_fn] // CHECK:STDOUT: %bound_method.loc12_45.2: = bound_method %u.ref, %specific_fn @@ -723,7 +723,7 @@ fn F() { // CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, %x // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %F.ref: %J.assoc_type = name_ref F, @J.WithSelf.%assoc1 [concrete = constants.%assoc1.413] -// CHECK:STDOUT: %impl.elem1: %.571 = impl_witness_access constants.%J.impl_witness.a18, element1 [concrete = constants.%empty_tuple.type.as.J.impl.F] +// CHECK:STDOUT: %impl.elem1: %.20f = impl_witness_access constants.%J.impl_witness.280, element1 [concrete = constants.%empty_tuple.type.as.J.impl.F] // CHECK:STDOUT: %bound_method.loc18_11: = bound_method %x.ref, %impl.elem1 // CHECK:STDOUT: %int_40: Core.IntLiteral = int_value 40 [concrete = constants.%int_40.f80] // CHECK:STDOUT: %impl.elem0: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -774,27 +774,27 @@ fn F() { // CHECK:STDOUT: %return.patt.loc6_20.2 => constants.%return.patt.cdd // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.WithSelf(constants.%.Self.d2f) { +// CHECK:STDOUT: specific @J.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%.Self.d2f -// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.fe4 -// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.839 +// CHECK:STDOUT: %Self => constants.%.Self.frozen +// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.885 +// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.76e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.WithSelf(constants.%J.facet.7f4) { +// CHECK:STDOUT: specific @J.WithSelf(constants.%J.facet.2b9) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%J.facet.7f4 -// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.23c -// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.bc0 +// CHECK:STDOUT: %Self => constants.%J.facet.2b9 +// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.9eb +// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.cf7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.WithSelf.F(constants.%J.facet.7f4) { -// CHECK:STDOUT: %Self => constants.%J.facet.7f4 +// CHECK:STDOUT: specific @J.WithSelf.F(constants.%J.facet.2b9) { +// CHECK:STDOUT: %Self => constants.%J.facet.2b9 // CHECK:STDOUT: %Self.as_type.loc6_8.1 => constants.%empty_tuple.type // CHECK:STDOUT: %pattern_type.loc6_8 => constants.%pattern_type.cb1 // CHECK:STDOUT: %self.param_patt.loc6_8.2 => constants.%self.param_patt.154 // CHECK:STDOUT: %self.patt.loc6_8.2 => constants.%self.patt.8c1 -// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.a18 +// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.280 // CHECK:STDOUT: %impl.elem0.loc6_17.1 => constants.%i32 // CHECK:STDOUT: %pattern_type.loc6_15 => constants.%pattern_type.6b6 // CHECK:STDOUT: %u.param_patt.loc6_15.2 => constants.%u.param_patt.151 @@ -804,20 +804,20 @@ fn F() { // CHECK:STDOUT: %return.patt.loc6_20.2 => constants.%return.patt.e1b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.WithSelf(constants.%J.facet.9f1) { +// CHECK:STDOUT: specific @J.WithSelf(constants.%J.facet.0ec) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self => constants.%J.facet.9f1 -// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.4e8 -// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.39b +// CHECK:STDOUT: %Self => constants.%J.facet.0ec +// CHECK:STDOUT: %J.WithSelf.F.type => constants.%J.WithSelf.F.type.125 +// CHECK:STDOUT: %J.WithSelf.F => constants.%J.WithSelf.F.b33 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @J.WithSelf.F(constants.%J.facet.9f1) { -// CHECK:STDOUT: %Self => constants.%J.facet.9f1 +// CHECK:STDOUT: specific @J.WithSelf.F(constants.%J.facet.0ec) { +// CHECK:STDOUT: %Self => constants.%J.facet.0ec // CHECK:STDOUT: %Self.as_type.loc6_8.1 => constants.%C // CHECK:STDOUT: %pattern_type.loc6_8 => constants.%pattern_type.98b // CHECK:STDOUT: %self.param_patt.loc6_8.2 => constants.%self.param_patt.303 // CHECK:STDOUT: %self.patt.loc6_8.2 => constants.%self.patt.49a -// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.aa2 +// CHECK:STDOUT: %J.lookup_impl_witness => constants.%J.impl_witness.26d // CHECK:STDOUT: %impl.elem0.loc6_17.1 => constants.%C // CHECK:STDOUT: %pattern_type.loc6_15 => constants.%pattern_type.98b // CHECK:STDOUT: %u.param_patt.loc6_15.2 => constants.%u.param_patt.162 @@ -844,10 +844,10 @@ fn F() { // CHECK:STDOUT: %E.as.J.impl.G.type: type = fn_type @E.as.J.impl.G [concrete] // CHECK:STDOUT: %E.as.J.impl.G: %E.as.J.impl.G.type = struct_value () [concrete] // CHECK:STDOUT: %J.facet: %J.type = facet_value %E, (%J.impl_witness) [concrete] -// CHECK:STDOUT: %J.WithSelf.F.type.78d: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet) [concrete] -// CHECK:STDOUT: %J.WithSelf.G.type.622: type = fn_type @J.WithSelf.G, @J.WithSelf(%J.facet) [concrete] +// CHECK:STDOUT: %J.WithSelf.F.type.c67: type = fn_type @J.WithSelf.F, @J.WithSelf(%J.facet) [concrete] +// CHECK:STDOUT: %J.WithSelf.G.type.e1c: type = fn_type @J.WithSelf.G, @J.WithSelf(%J.facet) [concrete] // CHECK:STDOUT: %e1.patt: %pattern_type.6b6 = value_binding_pattern e1 [concrete] -// CHECK:STDOUT: %.f23: type = fn_type_with_self_type %J.WithSelf.F.type.78d, %J.facet [concrete] +// CHECK:STDOUT: %.d3c: type = fn_type_with_self_type %J.WithSelf.F.type.c67, %J.facet [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] // CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] @@ -864,7 +864,7 @@ fn F() { // 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: %e2.patt: %pattern_type.6b6 = value_binding_pattern e2 [concrete] -// CHECK:STDOUT: %.008: type = fn_type_with_self_type %J.WithSelf.G.type.622, %J.facet [concrete] +// CHECK:STDOUT: %.af4: type = fn_type_with_self_type %J.WithSelf.G.type.e1c, %J.facet [concrete] // CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.485: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.e39 [concrete] // CHECK:STDOUT: %bound_method.763: = bound_method %int_3.1ba, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete] @@ -895,7 +895,7 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %e.ref.loc22: %E = name_ref e, %e // CHECK:STDOUT: %F.ref.loc22: %J.assoc_type = name_ref F, @J.WithSelf.%assoc1 [concrete = constants.%assoc1.413] -// CHECK:STDOUT: %impl.elem1.loc22: %.f23 = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F] +// CHECK:STDOUT: %impl.elem1.loc22: %.d3c = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0.loc22: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] // CHECK:STDOUT: %bound_method.loc22_28.1: = bound_method %int_2, %impl.elem0.loc22 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.9f3] @@ -914,7 +914,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %e.ref.loc23: %E = name_ref e, %e // CHECK:STDOUT: %G.ref.loc23: %J.assoc_type = name_ref G, @J.WithSelf.%assoc2 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2.loc23: %.008 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] +// CHECK:STDOUT: %impl.elem2.loc23: %.af4 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] // CHECK:STDOUT: %bound_method.loc23_25: = bound_method %e.ref.loc23, %impl.elem2.loc23 // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %impl.elem0.loc23: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -934,7 +934,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %E.ref.loc24: type = name_ref E, file.%E.decl [concrete = constants.%E] // CHECK:STDOUT: %F.ref.loc24: %J.assoc_type = name_ref F, @J.WithSelf.%assoc1 [concrete = constants.%assoc1.413] -// CHECK:STDOUT: %impl.elem1.loc24: %.f23 = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F] +// CHECK:STDOUT: %impl.elem1.loc24: %.d3c = impl_witness_access constants.%J.impl_witness, element1 [concrete = constants.%E.as.J.impl.F] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %impl.elem0.loc24: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] // CHECK:STDOUT: %bound_method.loc24_28.1: = bound_method %int_4, %impl.elem0.loc24 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound.aad] @@ -954,7 +954,7 @@ fn F() { // CHECK:STDOUT: %e.ref.loc25: %E = name_ref e, %e // CHECK:STDOUT: %E.ref.loc25: type = name_ref E, file.%E.decl [concrete = constants.%E] // CHECK:STDOUT: %G.ref.loc25: %J.assoc_type = name_ref G, @J.WithSelf.%assoc2 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2.loc25: %.008 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] +// CHECK:STDOUT: %impl.elem2.loc25: %.af4 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] // CHECK:STDOUT: %bound_method.loc25_25: = bound_method %e.ref.loc25, %impl.elem2.loc25 // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] // CHECK:STDOUT: %impl.elem0.loc25: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -975,7 +975,7 @@ fn F() { // CHECK:STDOUT: %e.ref.loc26: %E = name_ref e, %e // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %G.ref.loc26: %J.assoc_type = name_ref G, @J.WithSelf.%assoc2 [concrete = constants.%assoc2] -// CHECK:STDOUT: %impl.elem2.loc26: %.008 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] +// CHECK:STDOUT: %impl.elem2.loc26: %.af4 = impl_witness_access constants.%J.impl_witness, element2 [concrete = constants.%E.as.J.impl.G] // CHECK:STDOUT: %bound_method.loc26_25: = bound_method %e.ref.loc26, %impl.elem2.loc26 // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete = constants.%int_6.462] // CHECK:STDOUT: %impl.elem0.loc26: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] diff --git a/toolchain/check/testdata/index/fail_negative_indexing.carbon b/toolchain/check/testdata/index/fail_negative_indexing.carbon index 536bc06be0db..433b1ce175dd 100644 --- a/toolchain/check/testdata/index/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/index/fail_negative_indexing.carbon @@ -62,8 +62,8 @@ var d: i32 = c[-10]; // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.802: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.765: type = fn_type_with_self_type %Negate.WithSelf.Op.type.802, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_10, %Core.IntLiteral.as.Negate.impl.Op [concrete] @@ -160,7 +160,7 @@ var d: i32 = c[-10]; // CHECK:STDOUT: assign file.%c.var, %.loc15_1 // CHECK:STDOUT: %c.ref: ref %array_type = name_ref c, file.%c [concrete = file.%c.var] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [concrete = constants.%int_10] -// CHECK:STDOUT: %impl.elem1: %.765 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc20_16.1: = bound_method %int_10, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc20_16.1(%int_10) [concrete = constants.%int_-10.06d] // CHECK:STDOUT: %impl.elem0.loc20_16: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] diff --git a/toolchain/check/testdata/interface/as_type_of_type.carbon b/toolchain/check/testdata/interface/as_type_of_type.carbon index 2e2e124e5cb4..8c9bd7645af5 100644 --- a/toolchain/check/testdata/interface/as_type_of_type.carbon +++ b/toolchain/check/testdata/interface/as_type_of_type.carbon @@ -34,7 +34,7 @@ fn F(T:! Empty) { // 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] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.894: type = pattern_type %Empty.type [concrete] // CHECK:STDOUT: %T.patt.1d7: %pattern_type.894 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.4e8: %Empty.type = symbolic_binding T, 0 [symbolic] @@ -93,7 +93,7 @@ fn F(T:! Empty) { // CHECK:STDOUT: %T.patt.loc21_7.1: %pattern_type.894 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_7.2 (constants.%T.patt.1d7)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21: type = splice_block %Empty.ref [concrete = constants.%Empty.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc21_7.2: %Empty.type = symbolic_binding T, 0 [symbolic = %T.loc21_7.1 (constants.%T.4e8)] diff --git a/toolchain/check/testdata/interface/assoc_const_in_generic.carbon b/toolchain/check/testdata/interface/assoc_const_in_generic.carbon index 9624c11b52e1..33ad2e7207b1 100644 --- a/toolchain/check/testdata/interface/assoc_const_in_generic.carbon +++ b/toolchain/check/testdata/interface/assoc_const_in_generic.carbon @@ -31,7 +31,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -77,7 +77,7 @@ fn H() { // CHECK:STDOUT: %T.patt.loc15_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_17.1: type = splice_block %.loc15_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc15_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc15_14.1 (constants.%T)] @@ -86,7 +86,7 @@ fn H() { // CHECK:STDOUT: %T.patt.loc19_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19_10.1: type = splice_block %.loc19_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc19_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc19_7.1 (constants.%T)] @@ -115,7 +115,7 @@ fn H() { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc16_9.2 [symbolic = %U.loc16_9.1 (constants.%U)] // CHECK:STDOUT: %.loc16_21.2: Core.Form = init_form %U.ref [symbolic = %.loc16_21.1 (constants.%.a6b)] // CHECK:STDOUT: %.loc16_12.1: type = splice_block %.loc16_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc16_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc16_9.2: type = symbolic_binding U, 2 [symbolic = %U.loc16_9.1 (constants.%U)] diff --git a/toolchain/check/testdata/interface/compound_member_access.carbon b/toolchain/check/testdata/interface/compound_member_access.carbon index ee016b6778d8..71116508b248 100644 --- a/toolchain/check/testdata/interface/compound_member_access.carbon +++ b/toolchain/check/testdata/interface/compound_member_access.carbon @@ -198,7 +198,7 @@ fn Works() { // CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type @J [concrete] // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.WithSelf.%U [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.2c5: type = pattern_type %J.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.2c5 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %J.type = symbolic_binding T, 0 [symbolic] @@ -242,12 +242,12 @@ fn Works() { // CHECK:STDOUT: %S.patt.loc8_27.1: @Simple1.%pattern_type (%pattern_type.0f6fa4.1) = symbolic_binding_pattern S, 1 [symbolic = %S.patt.loc8_27.2 (constants.%S.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_16: type = splice_block %J.ref [concrete = constants.%J.type] { -// CHECK:STDOUT: %.Self.loc8_13: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8_13: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_13.2: %J.type = symbolic_binding T, 0 [symbolic = %T.loc8_13.1 (constants.%T)] // CHECK:STDOUT: %.loc8_31.1: type = splice_block %impl.elem0.loc8_31.2 [symbolic = %impl.elem0.loc8_31.1 (constants.%impl.elem0.436176.1)] { -// CHECK:STDOUT: %.Self.loc8_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref: %J.type = name_ref T, %T.loc8_13.2 [symbolic = %T.loc8_13.1 (constants.%T)] // CHECK:STDOUT: %T.as_type.loc8_31.2: type = facet_access_type %T.ref [symbolic = %T.as_type.loc8_31.1 (constants.%T.as_type)] // CHECK:STDOUT: %.loc8_31.2: type = converted %T.ref, %T.as_type.loc8_31.2 [symbolic = %T.as_type.loc8_31.1 (constants.%T.as_type)] @@ -261,12 +261,12 @@ fn Works() { // CHECK:STDOUT: %W.patt.loc11_29.1: @Compound1.%pattern_type (%pattern_type.0f6fa4.2) = symbolic_binding_pattern W, 1 [symbolic = %W.patt.loc11_29.2 (constants.%W.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_18: type = splice_block %J.ref.loc11_18 [concrete = constants.%J.type] { -// CHECK:STDOUT: %.Self.loc11_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc11_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %J.ref.loc11_18: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc11_15.2: %J.type = symbolic_binding V, 0 [symbolic = %V.loc11_15.1 (constants.%V)] // CHECK:STDOUT: %.loc11_33: type = splice_block %impl.elem0.loc11_33.2 [symbolic = %impl.elem0.loc11_33.1 (constants.%impl.elem0.436176.2)] { -// CHECK:STDOUT: %.Self.loc11_29: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc11_29: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %V.ref: %J.type = name_ref V, %V.loc11_15.2 [symbolic = %V.loc11_15.1 (constants.%V)] // CHECK:STDOUT: %J.ref.loc11_35: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0] @@ -378,7 +378,7 @@ fn Works() { // CHECK:STDOUT: %K1.assoc_type: type = assoc_entity_type @K1 [concrete] // CHECK:STDOUT: %assoc0: %K1.assoc_type = assoc_entity element0, @K1.WithSelf.%K1.WithSelf.Q1.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %K1.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %K1.type = symbolic_binding T, 0 [symbolic] @@ -423,7 +423,7 @@ fn Works() { // CHECK:STDOUT: %T.patt.loc8_13.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8: type = splice_block %K1.ref [concrete = constants.%K1.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %K1.ref: type = name_ref K1, file.%K1.decl [concrete = constants.%K1.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_13.2: %K1.type = symbolic_binding T, 0 [symbolic = %T.loc8_13.1 (constants.%T)] @@ -432,7 +432,7 @@ fn Works() { // CHECK:STDOUT: %V.patt.loc13_15.1: %pattern_type = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc13_15.2 (constants.%V.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13: type = splice_block %K1.ref.loc13 [concrete = constants.%K1.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %K1.ref.loc13: type = name_ref K1, file.%K1.decl [concrete = constants.%K1.type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc13_15.2: %K1.type = symbolic_binding V, 0 [symbolic = %V.loc13_15.1 (constants.%V)] @@ -561,7 +561,7 @@ fn Works() { // CHECK:STDOUT: %K2.assoc_type: type = assoc_entity_type @K2 [concrete] // CHECK:STDOUT: %assoc0.7f8: %K2.assoc_type = assoc_entity element0, @K2.WithSelf.%K2.WithSelf.Q2.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.583: type = pattern_type %K2.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.583 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %K2.type = symbolic_binding T, 0 [symbolic] @@ -615,7 +615,7 @@ fn Works() { // CHECK:STDOUT: %x.patt.loc8_21.1: @Simple3.%pattern_type (%pattern_type.f2711c.1) = at_binding_pattern x, %x.param_patt.loc8_21.1 [symbolic = %x.patt.loc8_21.2 (constants.%x.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_16: type = splice_block %K2.ref [concrete = constants.%K2.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %K2.ref: type = name_ref K2, file.%K2.decl [concrete = constants.%K2.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_13.2: %K2.type = symbolic_binding T, 0 [symbolic = %T.loc8_13.1 (constants.%T)] @@ -633,7 +633,7 @@ fn Works() { // CHECK:STDOUT: %y.patt.loc14_23.1: @Compound3.%pattern_type (%pattern_type.f2711c.2) = at_binding_pattern y, %y.param_patt.loc14_23.1 [symbolic = %y.patt.loc14_23.2 (constants.%y.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_18: type = splice_block %K2.ref.loc14 [concrete = constants.%K2.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %K2.ref.loc14: type = name_ref K2, file.%K2.decl [concrete = constants.%K2.type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc14_15.2: %K2.type = symbolic_binding V, 0 [symbolic = %V.loc14_15.1 (constants.%V)] @@ -777,7 +777,7 @@ fn Works() { // CHECK:STDOUT: %L1.WithSelf.S1.11f: %L1.WithSelf.S1.type.ff3 = struct_value () [symbolic] // CHECK:STDOUT: %assoc1: %L1.assoc_type = assoc_entity element1, @L1.WithSelf.%L1.WithSelf.S1.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.b7b: type = pattern_type %L1.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.b7b = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %L1.type = symbolic_binding T, 0 [symbolic] @@ -863,7 +863,7 @@ fn Works() { // CHECK:STDOUT: %p.patt.loc9_27.1: @Simple4.%pattern_type.loc9_27 (%pattern_type.e0b9be.1) = at_binding_pattern p, %p.param_patt.loc9_27.1 [symbolic = %p.patt.loc9_27.2 (constants.%p.patt.4967c5.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_16: type = splice_block %L1.ref [concrete = constants.%L1.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %L1.ref: type = name_ref L1, file.%L1.decl [concrete = constants.%L1.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_13.2: %L1.type = symbolic_binding T, 0 [symbolic = %T.loc9_13.1 (constants.%T)] @@ -891,7 +891,7 @@ fn Works() { // CHECK:STDOUT: %p.patt.loc15_29.1: @Compound4.%pattern_type.loc15_29 (%pattern_type.e0b9be.2) = at_binding_pattern p, %p.param_patt.loc15_29.1 [symbolic = %p.patt.loc15_29.2 (constants.%p.patt.4967c5.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_18: type = splice_block %L1.ref.loc15 [concrete = constants.%L1.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %L1.ref.loc15: type = name_ref L1, file.%L1.decl [concrete = constants.%L1.type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc15_15.2: %L1.type = symbolic_binding V, 0 [symbolic = %V.loc15_15.1 (constants.%V)] @@ -1202,7 +1202,7 @@ fn Works() { // CHECK:STDOUT: %L2.WithSelf.S2.a11: %L2.WithSelf.S2.type.51d = struct_value () [symbolic] // CHECK:STDOUT: %assoc1: %L2.assoc_type = assoc_entity element1, @L2.WithSelf.%L2.WithSelf.S2.decl [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.5b3: type = pattern_type %L2.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.5b3 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %L2.type = symbolic_binding T, 0 [symbolic] @@ -1244,7 +1244,7 @@ fn Works() { // CHECK:STDOUT: %T.patt.loc10_13.1: %pattern_type.5b3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10: type = splice_block %L2.ref [concrete = constants.%L2.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %L2.ref: type = name_ref L2, file.%L2.decl [concrete = constants.%L2.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10_13.2: %L2.type = symbolic_binding T, 0 [symbolic = %T.loc10_13.1 (constants.%T)] @@ -1253,7 +1253,7 @@ fn Works() { // CHECK:STDOUT: %V.patt.loc30_15.1: %pattern_type.5b3 = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc30_15.2 (constants.%V.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc30: type = splice_block %L2.ref.loc30 [concrete = constants.%L2.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %L2.ref.loc30: type = name_ref L2, file.%L2.decl [concrete = constants.%L2.type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc30_15.2: %L2.type = symbolic_binding V, 0 [symbolic = %V.loc30_15.1 (constants.%V)] diff --git a/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon b/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon index 7e44a4e48a00..07a78fea944d 100644 --- a/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon +++ b/toolchain/check/testdata/interface/fail_assoc_const_alias.carbon @@ -84,7 +84,7 @@ interface C { // CHECK:STDOUT: %Self.c1f: %J2.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.c1f [symbolic] // CHECK:STDOUT: %I2.lookup_impl_witness.b5c: = lookup_impl_witness %Self.c1f, @I2 [symbolic] -// CHECK:STDOUT: %.eef: require_specific_def_type = require_specific_def @V.as_type.as.I2.impl(%Self.c1f) [symbolic] +// CHECK:STDOUT: %.be9: require_specific_def_type = require_specific_def @V.as_type.as.I2.impl(%Self.c1f) [symbolic] // CHECK:STDOUT: %I2.facet.39b: %I2.type = facet_value %Self.as_type, (%I2.lookup_impl_witness.b5c) [symbolic] // CHECK:STDOUT: %impl.elem0.422: type = impl_witness_access %I2.lookup_impl_witness.b5c, element0 [symbolic] // CHECK:STDOUT: %.932: Core.Form = init_form %impl.elem0.422 [symbolic] @@ -140,7 +140,7 @@ interface C { // CHECK:STDOUT: generic fn @J2.WithSelf.F2(@J2.%Self: %J2.type) { // CHECK:STDOUT: %Self: %J2.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.c1f)] // CHECK:STDOUT: %Self.as_type.loc14_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc14_14.1: require_specific_def_type = require_specific_def @V.as_type.as.I2.impl(%Self) [symbolic = %.loc14_14.1 (constants.%.eef)] +// CHECK:STDOUT: %.loc14_14.1: require_specific_def_type = require_specific_def @V.as_type.as.I2.impl(%Self) [symbolic = %.loc14_14.1 (constants.%.be9)] // CHECK:STDOUT: %I2.lookup_impl_witness: = lookup_impl_witness %Self, @I2 [symbolic = %I2.lookup_impl_witness (constants.%I2.lookup_impl_witness.b5c)] // CHECK:STDOUT: %I2.facet.loc14_14.1: %I2.type = facet_value %Self.as_type.loc14_14.1, (%I2.lookup_impl_witness) [symbolic = %I2.facet.loc14_14.1 (constants.%I2.facet.39b)] // CHECK:STDOUT: %impl.elem0.loc14_14.1: type = impl_witness_access %I2.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_14.1 (constants.%impl.elem0.422)] @@ -157,7 +157,7 @@ interface C { // CHECK:STDOUT: specific @J2.WithSelf.F2(constants.%Self.c1f) { // CHECK:STDOUT: %Self => constants.%Self.c1f // CHECK:STDOUT: %Self.as_type.loc14_14.1 => constants.%Self.as_type -// CHECK:STDOUT: %.loc14_14.1 => constants.%.eef +// CHECK:STDOUT: %.loc14_14.1 => constants.%.be9 // CHECK:STDOUT: %I2.lookup_impl_witness => constants.%I2.lookup_impl_witness.b5c // CHECK:STDOUT: %I2.facet.loc14_14.1 => constants.%I2.facet.39b // CHECK:STDOUT: %impl.elem0.loc14_14.1 => constants.%impl.elem0.422 diff --git a/toolchain/check/testdata/interface/fail_assoc_fn_invalid_use.carbon b/toolchain/check/testdata/interface/fail_assoc_fn_invalid_use.carbon index 5400aa8b1048..34b47d4c395e 100644 --- a/toolchain/check/testdata/interface/fail_assoc_fn_invalid_use.carbon +++ b/toolchain/check/testdata/interface/fail_assoc_fn_invalid_use.carbon @@ -43,7 +43,7 @@ fn Use(T:! I) { // 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: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] @@ -68,7 +68,7 @@ fn Use(T:! I) { // CHECK:STDOUT: %T.patt.loc8_9.1: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_9.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_9.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc8_9.1 (constants.%T)] diff --git a/toolchain/check/testdata/interface/fail_generic_redeclaration.carbon b/toolchain/check/testdata/interface/fail_generic_redeclaration.carbon index 1e308ac0cf7c..e1c19255f951 100644 --- a/toolchain/check/testdata/interface/fail_generic_redeclaration.carbon +++ b/toolchain/check/testdata/interface/fail_generic_redeclaration.carbon @@ -47,7 +47,7 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: constants { // CHECK:STDOUT: %NotGeneric.type.fd5: type = facet_type <@NotGeneric.loc15> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -83,7 +83,7 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: %T.patt.loc23_23.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc23_23.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc23_26.1: type = splice_block %.loc23_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc23_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc23_23.2: type = symbolic_binding T, 0 [symbolic = %T.loc23_23.1 (constants.%T.67d)] @@ -92,7 +92,7 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: %T.patt.loc25_20.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_20.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc25_23.1: type = splice_block %.loc25_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc25_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc25_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc25_20.1 (constants.%T.67d)] @@ -102,7 +102,7 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: %T.patt.loc35_28.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc35_28.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc35_31.1: type = splice_block %.loc35_31.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc35_31.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc35_28.2: type = symbolic_binding T, 0 [symbolic = %T.loc35_28.1 (constants.%T.67d)] @@ -111,7 +111,7 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: %T.patt.loc43_28.1: %pattern_type.cb1 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc43_28.2 (constants.%T.patt.8f8)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc43_32.1: type = splice_block %.loc43_32.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc43_32.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc43_32.3: type = converted %.loc43_32.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/fail_lookup_in_type_type.carbon b/toolchain/check/testdata/interface/fail_lookup_in_type_type.carbon index e68982679c17..38c521c7030b 100644 --- a/toolchain/check/testdata/interface/fail_lookup_in_type_type.carbon +++ b/toolchain/check/testdata/interface/fail_lookup_in_type_type.carbon @@ -62,6 +62,8 @@ let U: (type where .Self impls type).missing = {}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -74,14 +76,21 @@ let U: (type where .Self impls type).missing = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %.1: = splice_block [concrete = ] { // CHECK:STDOUT: %.loc8_9: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc8_9 [concrete] +// CHECK:STDOUT: %.Self.ref.loc8_20.1: %type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_32: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc8_20.1: type = facet_access_type %.Self.ref.loc8_20.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_20.1: type = converted %.Self.ref.loc8_20.1, %.Self.as_type.loc8_20.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc8_26.1 = requirement_impls %.loc8_20.1, %.loc8_32 [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc8_20.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc8_20.2: type = facet_access_type %.Self.ref.loc8_20.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc8_20.2: type = converted %.Self.ref.loc8_20.1, %.Self.as_type.loc8_20.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc8_26.2 = requirement_impls %.loc8_20.2, %.loc8_32 [concrete] // CHECK:STDOUT: %.loc8_14: type = where_expr [concrete = constants.%type] { -// CHECK:STDOUT: requirement_base_facet_type %.loc8_9 -// CHECK:STDOUT: requirement_impls %.loc8_20, %.loc8_32 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc8_9 [concrete] +// CHECK:STDOUT: %impls.loc8_26.2 = requirement_impls %.loc8_20.2, %.loc8_32 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %missing.ref: = name_ref missing, [concrete = ] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/fail_member_lookup.carbon b/toolchain/check/testdata/interface/fail_member_lookup.carbon index 8fba38b83a7e..6ea1751f7bf6 100644 --- a/toolchain/check/testdata/interface/fail_member_lookup.carbon +++ b/toolchain/check/testdata/interface/fail_member_lookup.carbon @@ -64,7 +64,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: %Different.type: type = facet_type <@Different> [concrete] // CHECK:STDOUT: %Self.8ba: %Different.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.776: type = pattern_type %Different.type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.776 = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U: %Different.type = symbolic_binding U, 0 [symbolic] @@ -105,7 +105,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: %T.ref: %Interface.assoc_type = name_ref T, @T.%assoc1 [concrete = constants.%assoc1] // CHECK:STDOUT: %U.as_type.loc32_25.2: type = facet_access_type %U.ref [symbolic = %U.as_type.loc32_25.1 (constants.%U.as_type)] // CHECK:STDOUT: %.loc32: type = splice_block %Different.ref [concrete = constants.%Different.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Different.ref: type = name_ref Different, file.%Different.decl [concrete = constants.%Different.type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc32_7.2: %Different.type = symbolic_binding U, 0 [symbolic = %U.loc32_7.1 (constants.%U)] diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon index 1f4290a8875c..7a136805fa3c 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon @@ -191,7 +191,7 @@ fn Interface.C.F(unused self, U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: %self.param_patt.f45: %pattern_type.f25 = value_param_pattern [symbolic] // CHECK:STDOUT: %self.patt.134: %pattern_type.f25 = at_binding_pattern self, %self.param_patt.f45 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %U.patt.014: %pattern_type.98f = symbolic_binding_pattern U, 1 [symbolic] // CHECK:STDOUT: %U.091: type = symbolic_binding U, 1 [symbolic] @@ -253,7 +253,7 @@ fn Interface.C.F(unused self, U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: } // CHECK:STDOUT: %self.loc20: @C.F.%C (%C) = wrapper_binding self, %self.param.loc20 // CHECK:STDOUT: %.loc20_35.1: type = splice_block %.loc20_35.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc20_35.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc20: type = symbolic_binding U, 1 [symbolic = %U.loc14_17.1 (constants.%U.091)] @@ -311,7 +311,7 @@ fn Interface.C.F(unused self, U:! type, u: U*) -> U* { return u; } // CHECK:STDOUT: } // CHECK:STDOUT: %self.loc14: @C.F.%C (%C) = wrapper_binding self, %self.param.loc14 // CHECK:STDOUT: %.loc14_20.1: type = splice_block %.loc14_20.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_20.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc14_17.2: type = symbolic_binding U, 1 [symbolic = %U.loc14_17.1 (constants.%U.091)] diff --git a/toolchain/check/testdata/interface/final.carbon b/toolchain/check/testdata/interface/final.carbon index 7121278b4f94..5f2349e5c7f7 100644 --- a/toolchain/check/testdata/interface/final.carbon +++ b/toolchain/check/testdata/interface/final.carbon @@ -41,7 +41,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete] // CHECK:STDOUT: %Self.653: %J.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -117,7 +117,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %.loc7_27: type = converted %T.ref, %T.as_type.loc7_27.2 [symbolic = %T.as_type.loc7_27.1 (constants.%T.as_type.d90)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: %.loc7_24: type = splice_block %J.ref [concrete = constants.%J.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_21.2: %J.type = symbolic_binding T, 0 [symbolic = %T.loc7_21.1 (constants.%T.e40)] @@ -126,7 +126,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %T.patt.loc11_10.1: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_10.2 (constants.%T.patt.1df)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_13: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc11_10.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc11_10.1 (constants.%T.dda)] @@ -135,7 +135,7 @@ fn Use() { UseJ(C); } // CHECK:STDOUT: %T.patt.loc12_10.1: %pattern_type.2c5 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_10.2 (constants.%T.patt.ac1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_13: type = splice_block %J.ref [concrete = constants.%J.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_10.2: %J.type = symbolic_binding T, 0 [symbolic = %T.loc12_10.1 (constants.%T.e40)] diff --git a/toolchain/check/testdata/interface/generic.carbon b/toolchain/check/testdata/interface/generic.carbon index 6f1358de8298..392d870d9938 100644 --- a/toolchain/check/testdata/interface/generic.carbon +++ b/toolchain/check/testdata/interface/generic.carbon @@ -80,7 +80,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -153,7 +153,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc4_19.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_22.1: type = splice_block %.loc4_22.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_22.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_19.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_19.1 (constants.%T.67d)] @@ -163,7 +163,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc8_24.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_24.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_27.1: type = splice_block %.loc8_27.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_27.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_24.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_24.1 (constants.%T.67d)] @@ -174,12 +174,12 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %N.patt.loc22_39.1: @WithImplicitArgs.%pattern_type (%pattern_type.51d) = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc22_39.2 (constants.%N.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc22_32.1: type = splice_block %.loc22_32.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc22_29: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc22_29: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc22_32.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc22_29.2: type = symbolic_binding T, 0 [symbolic = %T.loc22_29.1 (constants.%T.67d)] // CHECK:STDOUT: %.loc22_42: type = splice_block %T.ref [symbolic = %T.loc22_29.1 (constants.%T.67d)] { -// CHECK:STDOUT: %.Self.loc22_39: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc22_39: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc22_29.2 [symbolic = %T.loc22_29.1 (constants.%T.67d)] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc22_39.2: @WithImplicitArgs.%T.loc22_29.1 (%T.67d) = symbolic_binding N, 1 [symbolic = %N.loc22_39.1 (constants.%N)] @@ -188,7 +188,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc24_20.1: %pattern_type.472 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_20.2 (constants.%T.patt.407)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc24: type = splice_block %Simple.type [concrete = constants.%Simple.type.d50] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Simple.ref: %Simple.type.887 = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.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] @@ -199,7 +199,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc25_10.1: %pattern_type.472 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_10.2 (constants.%T.patt.407)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc25: type = splice_block %Simple.type [concrete = constants.%Simple.type.d50] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Simple.ref: %Simple.type.887 = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.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] @@ -483,7 +483,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -523,7 +523,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc4_20.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_20.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_23.1: type = splice_block %.loc4_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_20.1 (constants.%T.67d)] @@ -534,7 +534,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc9_7.1: %pattern_type.338 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_7.2 (constants.%T.patt.49c)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9: type = splice_block %Generic.type [concrete = constants.%Generic.type.c3a] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%A)> [concrete = constants.%Generic.type.c3a] @@ -545,7 +545,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc10_7.1: %pattern_type.dae = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_7.2 (constants.%T.patt.b1f)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10: type = splice_block %Generic.type [concrete = constants.%Generic.type.57d] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%B)> [concrete = constants.%Generic.type.57d] @@ -656,7 +656,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -679,7 +679,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc3_20.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc3_20.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_23.1: type = splice_block %.loc3_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_20.1 (constants.%T)] @@ -688,7 +688,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt: = symbolic_binding_pattern T, 0 [concrete = ] // CHECK:STDOUT: } { // CHECK:STDOUT: %.1: = splice_block [concrete = ] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Generic.ref: %Generic.type.30d = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] // CHECK:STDOUT: %.loc12_26: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_30: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] diff --git a/toolchain/check/testdata/interface/generic_binding_after_assoc_const.carbon b/toolchain/check/testdata/interface/generic_binding_after_assoc_const.carbon index 6bf9fc503ca8..54423782a819 100644 --- a/toolchain/check/testdata/interface/generic_binding_after_assoc_const.carbon +++ b/toolchain/check/testdata/interface/generic_binding_after_assoc_const.carbon @@ -26,7 +26,7 @@ interface I { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 1 [symbolic] // CHECK:STDOUT: %T: type = symbolic_binding T, 1 [symbolic] @@ -56,7 +56,7 @@ interface I { // CHECK:STDOUT: %T.patt.loc16_9.1: %pattern_type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc16_9.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_12.1: type = splice_block %.loc16_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc16_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc16_9.2: type = symbolic_binding T, 1 [symbolic = %T.loc16_9.1 (constants.%T)] @@ -69,7 +69,7 @@ interface I { // CHECK:STDOUT: %T.patt.loc20_9.1: %pattern_type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc20_9.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_12.1: type = splice_block %.loc20_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc20_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20_9.2: type = symbolic_binding T, 1 [symbolic = %T.loc20_9.1 (constants.%T)] diff --git a/toolchain/check/testdata/interface/generic_import.carbon b/toolchain/check/testdata/interface/generic_import.carbon index b926b79ec376..8b68e8fd752a 100644 --- a/toolchain/check/testdata/interface/generic_import.carbon +++ b/toolchain/check/testdata/interface/generic_import.carbon @@ -35,7 +35,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -57,7 +57,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T.patt.loc4_20.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_20.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_23.1: type = splice_block %.loc4_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_20.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_20.1 (constants.%T)] diff --git a/toolchain/check/testdata/interface/generic_method.carbon b/toolchain/check/testdata/interface/generic_method.carbon index cbba4a042a45..9f9cbeda96d0 100644 --- a/toolchain/check/testdata/interface/generic_method.carbon +++ b/toolchain/check/testdata/interface/generic_method.carbon @@ -88,7 +88,7 @@ fn CallIndirect() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -294,7 +294,7 @@ fn CallIndirect() { // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_14.1 (constants.%T.67d)] @@ -313,7 +313,7 @@ fn CallIndirect() { // CHECK:STDOUT: %T.patt.loc26_17.1: %pattern_type.871 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc26_17.2 (constants.%T.patt.c17)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc26_25.1: type = splice_block %.loc26_25.3 [concrete = constants.%facet_type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: %A.type.55a = name_ref A, file.%A.decl [concrete = constants.%A.generic] // 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] @@ -361,7 +361,7 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc6_40.4: type = converted %.loc6_40.2, constants.%tuple.type.640 [symbolic = %tuple.type.loc6_40.2 (constants.%tuple.type.640)] // CHECK:STDOUT: %.loc6_40.5: Core.Form = init_form %.loc6_40.4 [symbolic = %.loc6_40.1 (constants.%.f0d)] // CHECK:STDOUT: %.loc6_12.1: type = splice_block %.loc6_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc6_9.2: type = symbolic_binding U, 2 [symbolic = %U.loc6_9.1 (constants.%U.4e7)] @@ -407,7 +407,7 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc16_37.3: type = converted %.loc16_37.2, constants.%tuple.type.316 [symbolic = %tuple.type.loc16 (constants.%tuple.type.316)] // CHECK:STDOUT: %.loc16_37.4: Core.Form = init_form %.loc16_37.3 [symbolic = %.loc16_37.1 (constants.%.3c1)] // CHECK:STDOUT: %.loc16_12.1: type = splice_block %.loc16_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc16_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc16_9.2: type = symbolic_binding U, 0 [symbolic = %U.loc16_9.1 (constants.%U.67d)] @@ -904,7 +904,7 @@ fn CallIndirect() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -1097,7 +1097,7 @@ fn CallIndirect() { // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_17.1: type = splice_block %.loc5_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_14.1 (constants.%T.67d)] @@ -1119,17 +1119,17 @@ fn CallIndirect() { // CHECK:STDOUT: %W.ref: type = name_ref W, %W.loc14_37.2 [symbolic = %W.loc14_37.1 (constants.%W)] // CHECK:STDOUT: %A.type.loc14_61.2: type = facet_type <@A, @A(constants.%W)> [symbolic = %A.type.loc14_61.1 (constants.%A.type.3ad)] // CHECK:STDOUT: %.loc14_19.1: type = splice_block %.loc14_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc14_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %V1.loc14_16.2: type = symbolic_binding V1, 0 [symbolic = %V1.loc14_16.1 (constants.%V1)] // CHECK:STDOUT: %.loc14_30.1: type = splice_block %.loc14_30.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc14_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_30.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %V2.loc14_27.2: type = symbolic_binding V2, 1 [symbolic = %V2.loc14_27.1 (constants.%V2)] // CHECK:STDOUT: %.loc14_40.1: type = splice_block %.loc14_40.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc14_37: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc14_37: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc14_40.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc14_37.2: type = symbolic_binding W, 2 [symbolic = %W.loc14_37.1 (constants.%W)] @@ -1139,7 +1139,7 @@ fn CallIndirect() { // CHECK:STDOUT: %T.patt.loc27_17.1: %pattern_type.871 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc27_17.2 (constants.%T.patt.c17)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc27_25.1: type = splice_block %.loc27_25.3 [concrete = constants.%facet_type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: %A.type.55a = name_ref A, file.%A.decl [concrete = constants.%A.generic] // 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] @@ -1186,7 +1186,7 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc6_38.4: type = converted %.loc6_38.2, constants.%tuple.type.d73 [symbolic = %tuple.type.loc6_38.2 (constants.%tuple.type.d73)] // CHECK:STDOUT: %.loc6_38.5: Core.Form = init_form %.loc6_38.4 [symbolic = %.loc6_38.1 (constants.%.bc3)] // CHECK:STDOUT: %.loc6_12.1: type = splice_block %.loc6_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc6_9.2: type = symbolic_binding U, 2 [symbolic = %U.loc6_9.1 (constants.%U.4e7)] @@ -1249,7 +1249,7 @@ fn CallIndirect() { // CHECK:STDOUT: %.loc17_42.5: type = converted %.loc17_42.3, constants.%tuple.type.897 [symbolic = %tuple.type.loc17_42.2 (constants.%tuple.type.897)] // CHECK:STDOUT: %.loc17_42.6: Core.Form = init_form %.loc17_42.5 [symbolic = %.loc17_42.2 (constants.%.f8e)] // CHECK:STDOUT: %.loc17_12.1: type = splice_block %.loc17_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc17_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc17_9.2: type = symbolic_binding U, 3 [symbolic = %U.loc17_9.1 (constants.%U.ce4)] diff --git a/toolchain/check/testdata/interface/generic_vs_params.carbon b/toolchain/check/testdata/interface/generic_vs_params.carbon index 1779f05fe5f7..fe5996621c0d 100644 --- a/toolchain/check/testdata/interface/generic_vs_params.carbon +++ b/toolchain/check/testdata/interface/generic_vs_params.carbon @@ -82,7 +82,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %NotGenericButParams.type.21c: type = facet_type <@NotGenericButParams> [concrete] // CHECK:STDOUT: %Self.9dd: %NotGenericButParams.type.21c = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -139,7 +139,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %T.patt.loc6_29.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_29.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_32.1: type = splice_block %.loc6_32.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_32.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_29.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_29.1 (constants.%T)] @@ -148,7 +148,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %T.patt.loc8_10.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_10.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_13.1: type = splice_block %.loc8_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_10.1 (constants.%T)] @@ -340,7 +340,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %U.patt.loc10_31.1: %pattern_type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc10_31.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_34.1: type = splice_block %.loc10_34.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc10_34.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc10_31.2: type = symbolic_binding U, 1 [symbolic = %U.loc10_31.1 (constants.%U)] @@ -559,7 +559,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -577,7 +577,7 @@ interface Bar[T:! type] {} // CHECK:STDOUT: %T.patt.loc8_16.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_19.1: type = splice_block %.loc8_19.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_19.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_16.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_16.1 (constants.%T)] diff --git a/toolchain/check/testdata/interface/incomplete.carbon b/toolchain/check/testdata/interface/incomplete.carbon index ee5b35acc197..2b5d180bfa9a 100644 --- a/toolchain/check/testdata/interface/incomplete.carbon +++ b/toolchain/check/testdata/interface/incomplete.carbon @@ -151,10 +151,13 @@ interface A(T:! type) { // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%T [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.aef: %C = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // 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.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: %C = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.cc9: %C = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -168,17 +171,21 @@ interface A(T:! type) { // CHECK:STDOUT: %.loc16_7.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc16_7.2: type = converted %.loc16_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc16_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc16_20: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %C = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc16_20.1: %C = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.aef] // CHECK:STDOUT: %.loc16_27: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %rewrite.loc16_23.1 = requirement_rewrite %impl.elem0.loc16_20.1, [concrete] +// CHECK:STDOUT: %impl.elem0.loc16_20.2: %C = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.cc9] +// CHECK:STDOUT: %rewrite.loc16_23.2 = requirement_rewrite %impl.elem0.loc16_20.2, [concrete] // CHECK:STDOUT: %.loc16_14: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %rewrite.loc16_23.2 = requirement_rewrite %impl.elem0.loc16_20.2, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -216,7 +223,7 @@ interface A(T:! type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self) { +// CHECK:STDOUT: specific @I.WithSelf(constants.%.Self.frozen) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: @@ -229,7 +236,7 @@ interface A(T:! type) { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%T [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.6cb = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U: %I.type = symbolic_binding U, 0 [symbolic] @@ -258,7 +265,7 @@ interface A(T:! type) { // CHECK:STDOUT: %a.patt.loc9_14.1: @F.%pattern_type (%pattern_type.b3a) = at_binding_pattern a, %a.param_patt.loc9_14.1 [symbolic = %a.patt.loc9_14.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_10: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc9_7.2: %I.type = symbolic_binding U, 0 [symbolic = %U.loc9_7.1 (constants.%U)] @@ -427,7 +434,7 @@ interface A(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -449,7 +456,7 @@ interface A(T:! type) { // CHECK:STDOUT: %T.patt.loc3_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc3_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_17.1: type = splice_block %.loc3_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_14.1 (constants.%T)] diff --git a/toolchain/check/testdata/interface/member_lookup.carbon b/toolchain/check/testdata/interface/member_lookup.carbon index bddf6fc520ae..d6c2a7432e97 100644 --- a/toolchain/check/testdata/interface/member_lookup.carbon +++ b/toolchain/check/testdata/interface/member_lookup.carbon @@ -57,7 +57,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -151,7 +151,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_22.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_22.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_25.1: type = splice_block %.loc4_25.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_25.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_22.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_22.1 (constants.%T.67d)] @@ -166,12 +166,12 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %ptr.loc8_50.2: type = ptr_type %T.ref.loc8_49 [symbolic = %ptr.loc8_50.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %.loc8_50.2: Core.Form = init_form %ptr.loc8_50.2 [symbolic = %.loc8_50.1 (constants.%.cb6)] // CHECK:STDOUT: %.loc8_22.1: type = splice_block %.loc8_22.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc8_19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8_19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_22.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_19.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_19.1 (constants.%T.67d)] // CHECK:STDOUT: %.loc8_43: type = splice_block %Interface.type.loc8_43.2 [symbolic = %Interface.type.loc8_43.1 (constants.%Interface.type.fe8)] { -// CHECK:STDOUT: %.Self.loc8_29: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8_29: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Interface.ref: %Interface.type.1b1 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic] // CHECK:STDOUT: %T.ref.loc8_42: type = name_ref T, %T.loc8_19.2 [symbolic = %T.loc8_19.1 (constants.%T.67d)] // CHECK:STDOUT: %Interface.type.loc8_43.2: type = facet_type <@Interface, @Interface(constants.%T.67d)> [symbolic = %Interface.type.loc8_43.1 (constants.%Interface.type.fe8)] @@ -189,7 +189,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %ptr: type = ptr_type %i32.loc12_42 [concrete = constants.%ptr.d08] // CHECK:STDOUT: %.loc12_45: Core.Form = init_form %ptr [concrete = constants.%.952] // CHECK:STDOUT: %.loc12_36: type = splice_block %Interface.type [concrete = constants.%Interface.type.c5f] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Interface.ref: %Interface.type.1b1 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic] // CHECK:STDOUT: %i32.loc12_33: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [concrete = constants.%Interface.type.c5f] @@ -387,7 +387,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -452,7 +452,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_22.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_22.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_25.1: type = splice_block %.loc4_25.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_25.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_22.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_22.1 (constants.%T)] @@ -466,12 +466,12 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.ref.loc8_56: type = name_ref T, %T.loc8_26.2 [symbolic = %T.loc8_26.1 (constants.%T)] // CHECK:STDOUT: %.loc8_56.2: Core.Form = init_form %T.ref.loc8_56 [symbolic = %.loc8_56.1 (constants.%.184)] // CHECK:STDOUT: %.loc8_29.1: type = splice_block %.loc8_29.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc8_26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8_26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_29.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_26.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_26.1 (constants.%T)] // CHECK:STDOUT: %.loc8_50: type = splice_block %Interface.type.loc8_50.2 [symbolic = %Interface.type.loc8_50.1 (constants.%Interface.type.fe8)] { -// CHECK:STDOUT: %.Self.loc8_36: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8_36: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Interface.ref: %Interface.type.1b1 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic] // CHECK:STDOUT: %T.ref.loc8_49: type = name_ref T, %T.loc8_26.2 [symbolic = %T.loc8_26.1 (constants.%T)] // CHECK:STDOUT: %Interface.type.loc8_50.2: type = facet_type <@Interface, @Interface(constants.%T)> [symbolic = %Interface.type.loc8_50.1 (constants.%Interface.type.fe8)] @@ -488,7 +488,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %i32.loc16_49: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc16_49: Core.Form = init_form %i32.loc16_49 [concrete = constants.%.795] // CHECK:STDOUT: %.loc16_43: type = splice_block %Interface.type [concrete = constants.%Interface.type.c5f] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Interface.ref: %Interface.type.1b1 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic] // CHECK:STDOUT: %i32.loc16_40: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [concrete = constants.%Interface.type.c5f] diff --git a/toolchain/check/testdata/interface/observe.carbon b/toolchain/check/testdata/interface/observe.carbon index 95c348bae08c..5d032990d943 100644 --- a/toolchain/check/testdata/interface/observe.carbon +++ b/toolchain/check/testdata/interface/observe.carbon @@ -809,7 +809,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Transitive.type: type = facet_type <@Transitive> [concrete] // CHECK:STDOUT: %Self.744: %Transitive.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Transitive.lookup_impl_witness.ab0b8d.1: = lookup_impl_witness %Self.744, @Transitive [symbolic] @@ -1048,7 +1048,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %t.patt.loc5_23.1: @F.%pattern_type.loc5 (%pattern_type.68e728.2) = at_binding_pattern t, %t.param_patt.loc5_23.1 [symbolic = %t.patt.loc5_23.2 (constants.%t.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_10: type = splice_block %Transitive.ref [concrete = constants.%Transitive.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Transitive.ref: type = name_ref Transitive, imports.%Main.Transitive [concrete = constants.%Transitive.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_7.2: %Transitive.type = symbolic_binding T, 0 [symbolic = %T.loc5_7.1 (constants.%T)] @@ -1531,7 +1531,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %Self.62a: %C.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.187: type = facet_access_type %Self.62a [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt.a4b: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.626: %A.type = symbolic_binding T, 0 [symbolic] @@ -1581,7 +1581,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc7_29.1: @RequiresA.%pattern_type (%pattern_type.a0e) = at_binding_pattern x, %x.param_patt.loc7_29.1 [symbolic = %x.patt.loc7_29.2 (constants.%x.patt.19b)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_18: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_15.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc7_15.1 (constants.%T.626)] @@ -1599,7 +1599,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc8_14.1: @F.%pattern_type (%pattern_type.df0) = at_binding_pattern x, %x.param_patt.loc8_14.1 [symbolic = %x.patt.loc8_14.2 (constants.%x.patt.f9a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_10: type = splice_block %C.ref [concrete = constants.%C.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_7.2: %C.type = symbolic_binding T, 0 [symbolic = %T.loc8_7.1 (constants.%T.659)] @@ -1779,7 +1779,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %P.type: type = facet_type <@P> [concrete] // CHECK:STDOUT: %Self.104: %P.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %P.WithSelf.InP.type: type = fn_type @P.WithSelf.InP, @P.WithSelf(%Self.104) [symbolic] @@ -1979,7 +1979,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %u.patt.loc5_36.1: @TakesPQR.%pattern_type (%pattern_type.54d) = at_binding_pattern u, %u.param_patt.loc5_36.1 [symbolic = %u.patt.loc5_36.2 (constants.%u.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_23.1: type = splice_block %.loc5_23.3 [concrete = constants.%facet_type.0b6] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %P.ref: type = name_ref P, imports.%Main.P [concrete = constants.%P.type] // CHECK:STDOUT: %Q.ref: type = name_ref Q, imports.%Main.Q [concrete = constants.%Q.type] // CHECK:STDOUT: %impl.elem0.loc5_19: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -2009,7 +2009,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %t.patt.loc6_23.1: @G.%pattern_type.loc6 (%pattern_type.68e728.2) = at_binding_pattern t, %t.param_patt.loc6_23.1 [symbolic = %t.patt.loc6_23.2 (constants.%t.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_10: type = splice_block %Transitive.ref [concrete = constants.%Transitive.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Transitive.ref: type = name_ref Transitive, imports.%Main.Transitive [concrete = constants.%Transitive.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: %Transitive.type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -2429,7 +2429,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %P.type: type = facet_type <@P> [concrete] // CHECK:STDOUT: %Self.104: %P.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %P.WithSelf.InP.type: type = fn_type @P.WithSelf.InP, @P.WithSelf(%Self.104) [symbolic] @@ -2620,7 +2620,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %u.patt.loc5_36.1: @TakesPQR.%pattern_type (%pattern_type.54d) = at_binding_pattern u, %u.param_patt.loc5_36.1 [symbolic = %u.patt.loc5_36.2 (constants.%u.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_23.1: type = splice_block %.loc5_23.3 [concrete = constants.%facet_type.0b6] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %P.ref: type = name_ref P, imports.%Main.P [concrete = constants.%P.type] // CHECK:STDOUT: %Q.ref: type = name_ref Q, imports.%Main.Q [concrete = constants.%Q.type] // CHECK:STDOUT: %impl.elem0.loc5_19: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -2650,7 +2650,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %t.patt.loc6_23.1: @G.%pattern_type.loc6 (%pattern_type.68e728.2) = at_binding_pattern t, %t.param_patt.loc6_23.1 [symbolic = %t.patt.loc6_23.2 (constants.%t.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_10: type = splice_block %Transitive.ref [concrete = constants.%Transitive.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Transitive.ref: type = name_ref Transitive, imports.%Main.Transitive [concrete = constants.%Transitive.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: %Transitive.type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -3020,7 +3020,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Transitive.type: type = facet_type <@Transitive> [concrete] // CHECK:STDOUT: %Self.744: %Transitive.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Transitive.lookup_impl_witness.ab0b8d.1: = lookup_impl_witness %Self.744, @Transitive [symbolic] @@ -3198,7 +3198,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %t.patt.loc5_23.1: @G.%pattern_type.loc5 (%pattern_type.68e728.2) = at_binding_pattern t, %t.param_patt.loc5_23.1 [symbolic = %t.patt.loc5_23.2 (constants.%t.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_10: type = splice_block %Transitive.ref [concrete = constants.%Transitive.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Transitive.ref: type = name_ref Transitive, imports.%Main.Transitive [concrete = constants.%Transitive.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_7.2: %Transitive.type = symbolic_binding T, 0 [symbolic = %T.loc5_7.1 (constants.%T)] @@ -3607,7 +3607,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %D.type: type = facet_type <@D> [concrete] // CHECK:STDOUT: %Self.e2d: %D.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt.a4b: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.626: %A.type = symbolic_binding T, 0 [symbolic] @@ -3698,7 +3698,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %.loc8_21: type = converted %T.ref, %T.as_type.loc8_21.1 [symbolic = %T.as_type.loc8_21.2 (constants.%T.as_type.3b8)] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: %.loc8_18: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.1: %A.type = symbolic_binding T, 0 [symbolic = %T.loc8_15.2 (constants.%T.626)] @@ -3711,7 +3711,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %.loc9_21: type = converted %T.ref, %T.as_type.loc9_21.1 [symbolic = %T.as_type.loc9_21.2 (constants.%T.as_type.4de)] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type] // CHECK:STDOUT: %.loc9_18: type = splice_block %B.ref [concrete = constants.%B.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_15.1: %B.type = symbolic_binding T, 0 [symbolic = %T.loc9_15.2 (constants.%T.ed4)] @@ -3724,7 +3724,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %.loc10_21: type = converted %T.ref, %T.as_type.loc10_21.1 [symbolic = %T.as_type.loc10_21.2 (constants.%T.as_type.c69)] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D.type] // CHECK:STDOUT: %.loc10_18: type = splice_block %C.ref [concrete = constants.%C.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10_15.1: %C.type = symbolic_binding T, 0 [symbolic = %T.loc10_15.2 (constants.%T.659)] @@ -3735,7 +3735,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc12_29.1: @RequiresB.%pattern_type (%pattern_type.c89) = at_binding_pattern x, %x.param_patt.loc12_29.1 [symbolic = %x.patt.loc12_29.2 (constants.%x.patt.3a5)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_18: type = splice_block %B.ref [concrete = constants.%B.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_15.2: %B.type = symbolic_binding T, 0 [symbolic = %T.loc12_15.1 (constants.%T.ed4)] @@ -3753,7 +3753,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc13_29.1: @RequiresD.%pattern_type (%pattern_type.86b) = at_binding_pattern x, %x.param_patt.loc13_29.1 [symbolic = %x.patt.loc13_29.2 (constants.%x.patt.a712ca.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_18: type = splice_block %D.ref [concrete = constants.%D.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_15.2: %D.type = symbolic_binding T, 0 [symbolic = %T.loc13_15.1 (constants.%T.3dd)] @@ -3771,7 +3771,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc15_22.1: @RequiresA.%pattern_type (%pattern_type.a0e) = at_binding_pattern x, %x.param_patt.loc15_22.1 [symbolic = %x.patt.loc15_22.2 (constants.%x.patt.19b9f1.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15_18: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc15_15.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc15_15.1 (constants.%T.626)] @@ -4120,7 +4120,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.b45: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %A.type = symbolic_binding T, 0 [symbolic] @@ -4131,7 +4131,8 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %RequiresA.type: type = fn_type @RequiresA [concrete] // CHECK:STDOUT: %RequiresA: %RequiresA.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.94f: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.Self.e4d: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.f7e: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %B_where.type: type = facet_type <@B where TODO> [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type %B_where.type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.831 = symbolic_binding_pattern U, 1 [symbolic] @@ -4172,7 +4173,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc6_29.1: @RequiresA.%pattern_type (%pattern_type.a0e) = at_binding_pattern x, %x.param_patt.loc6_29.1 [symbolic = %x.patt.loc6_29.2 (constants.%x.patt.19b)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_18: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_15.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc6_15.1 (constants.%T)] @@ -4189,19 +4190,24 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %U.patt.loc7_14.1: %pattern_type.831 = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc7_14.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.2 [concrete = constants.%B_where.type] { -// CHECK:STDOUT: %.Self.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] -// CHECK:STDOUT: %.Self.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.e4d] -// CHECK:STDOUT: %.Self.ref: %B.type = name_ref .Self, %.Self.loc7_19 [symbolic_self = constants.%.Self.e4d] +// CHECK:STDOUT: %.Self.frozen.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.f7e] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc7_25.1: %B.type = name_ref .Self, %.Self.frozen.loc7_19 [symbolic_self = constants.%.Self.frozen.f7e] // CHECK:STDOUT: %T.ref.loc7: %A.type = name_ref T, %T.loc7_7.2 [symbolic = %T.loc7_7.1 (constants.%T)] +// CHECK:STDOUT: %equiv.loc7_31.1 = requirement_equivalent %.Self.ref.loc7_25.1, %T.ref.loc7 [concrete] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc7_25.2: %B.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref.loc7 [concrete] // CHECK:STDOUT: %.loc7_19.2: type = where_expr [concrete = constants.%B_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %B.ref -// CHECK:STDOUT: requirement_equivalent %.Self.ref, %T.ref.loc7 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref [concrete] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref.loc7 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_14.2: %B_where.type = symbolic_binding U, 1 [symbolic = %U.loc7_14.1 (constants.%U)] @@ -4357,7 +4363,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.b45: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %A.type = symbolic_binding T, 0 [symbolic] @@ -4368,7 +4374,8 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %RequiresA.type: type = fn_type @RequiresA [concrete] // CHECK:STDOUT: %RequiresA: %RequiresA.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.94f: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.Self.e4d: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.f7e: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %B_where.type: type = facet_type <@B where TODO> [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type %B_where.type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.831 = symbolic_binding_pattern U, 1 [symbolic] @@ -4409,7 +4416,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc6_29.1: @RequiresA.%pattern_type (%pattern_type.a0e) = at_binding_pattern x, %x.param_patt.loc6_29.1 [symbolic = %x.patt.loc6_29.2 (constants.%x.patt.19b)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_18: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_15.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc6_15.1 (constants.%T)] @@ -4426,19 +4433,24 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %U.patt.loc7_14.1: %pattern_type.831 = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc7_14.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.2 [concrete = constants.%B_where.type] { -// CHECK:STDOUT: %.Self.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] -// CHECK:STDOUT: %.Self.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.e4d] -// CHECK:STDOUT: %.Self.ref: %B.type = name_ref .Self, %.Self.loc7_19 [symbolic_self = constants.%.Self.e4d] +// CHECK:STDOUT: %.Self.frozen.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.f7e] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc7_25.1: %B.type = name_ref .Self, %.Self.frozen.loc7_19 [symbolic_self = constants.%.Self.frozen.f7e] // CHECK:STDOUT: %T.ref: %A.type = name_ref T, %T.loc7_7.2 [symbolic = %T.loc7_7.1 (constants.%T)] +// CHECK:STDOUT: %equiv.loc7_31.1 = requirement_equivalent %.Self.ref.loc7_25.1, %T.ref [concrete] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc7_25.2: %B.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref [concrete] // CHECK:STDOUT: %.loc7_19.2: type = where_expr [concrete = constants.%B_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %B.ref -// CHECK:STDOUT: requirement_equivalent %.Self.ref, %T.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref [concrete] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_14.2: %B_where.type = symbolic_binding U, 1 [symbolic = %U.loc7_14.1 (constants.%U)] @@ -4594,7 +4606,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.b45: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %A.type = symbolic_binding T, 0 [symbolic] @@ -4605,7 +4617,8 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %RequiresA.type: type = fn_type @RequiresA [concrete] // CHECK:STDOUT: %RequiresA: %RequiresA.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.94f: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.Self.e4d: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.f7e: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %B_where.type: type = facet_type <@B where TODO> [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type %B_where.type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.831 = symbolic_binding_pattern U, 1 [symbolic] @@ -4646,7 +4659,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc6_29.1: @RequiresA.%pattern_type (%pattern_type.a0e) = at_binding_pattern x, %x.param_patt.loc6_29.1 [symbolic = %x.patt.loc6_29.2 (constants.%x.patt.19b)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_18: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_15.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc6_15.1 (constants.%T)] @@ -4663,19 +4676,24 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %U.patt.loc7_14.1: %pattern_type.831 = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc7_14.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.2 [concrete = constants.%B_where.type] { -// CHECK:STDOUT: %.Self.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] -// CHECK:STDOUT: %.Self.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.e4d] -// CHECK:STDOUT: %.Self.ref: %B.type = name_ref .Self, %.Self.loc7_19 [symbolic_self = constants.%.Self.e4d] +// CHECK:STDOUT: %.Self.frozen.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.f7e] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc7_25.1: %B.type = name_ref .Self, %.Self.frozen.loc7_19 [symbolic_self = constants.%.Self.frozen.f7e] // CHECK:STDOUT: %T.ref.loc7: %A.type = name_ref T, %T.loc7_7.2 [symbolic = %T.loc7_7.1 (constants.%T)] +// CHECK:STDOUT: %equiv.loc7_31.1 = requirement_equivalent %.Self.ref.loc7_25.1, %T.ref.loc7 [concrete] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc7_25.2: %B.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref.loc7 [concrete] // CHECK:STDOUT: %.loc7_19.2: type = where_expr [concrete = constants.%B_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %B.ref -// CHECK:STDOUT: requirement_equivalent %.Self.ref, %T.ref.loc7 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref [concrete] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref.loc7 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_14.2: %B_where.type = symbolic_binding U, 1 [symbolic = %U.loc7_14.1 (constants.%U)] @@ -4831,7 +4849,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.b45: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %A.type = symbolic_binding T, 0 [symbolic] @@ -4842,7 +4860,8 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %RequiresA.type: type = fn_type @RequiresA [concrete] // CHECK:STDOUT: %RequiresA: %RequiresA.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.94f: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.Self.e4d: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.f7e: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %B_where.type: type = facet_type <@B where TODO> [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type %B_where.type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.831 = symbolic_binding_pattern U, 1 [symbolic] @@ -4883,7 +4902,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc6_29.1: @RequiresA.%pattern_type (%pattern_type.a0e) = at_binding_pattern x, %x.param_patt.loc6_29.1 [symbolic = %x.patt.loc6_29.2 (constants.%x.patt.19b)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_18: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_15.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc6_15.1 (constants.%T)] @@ -4902,19 +4921,24 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc7_38.1: @F.%pattern_type (%pattern_type.d51) = at_binding_pattern x, %x.param_patt.loc7_38.1 [symbolic = %x.patt.loc7_38.2 (constants.%x.patt.cdb)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.2 [concrete = constants.%B_where.type] { -// CHECK:STDOUT: %.Self.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] -// CHECK:STDOUT: %.Self.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.e4d] -// CHECK:STDOUT: %.Self.ref: %B.type = name_ref .Self, %.Self.loc7_19 [symbolic_self = constants.%.Self.e4d] +// CHECK:STDOUT: %.Self.frozen.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.f7e] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc7_25.1: %B.type = name_ref .Self, %.Self.frozen.loc7_19 [symbolic_self = constants.%.Self.frozen.f7e] // CHECK:STDOUT: %T.ref: %A.type = name_ref T, %T.loc7_7.2 [symbolic = %T.loc7_7.1 (constants.%T)] +// CHECK:STDOUT: %equiv.loc7_31.1 = requirement_equivalent %.Self.ref.loc7_25.1, %T.ref [concrete] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc7_25.2: %B.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref [concrete] // CHECK:STDOUT: %.loc7_19.2: type = where_expr [concrete = constants.%B_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %B.ref -// CHECK:STDOUT: requirement_equivalent %.Self.ref, %T.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref [concrete] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_14.2: %B_where.type = symbolic_binding U, 1 [symbolic = %U.loc7_14.1 (constants.%U)] @@ -5086,7 +5110,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.b45: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %A.type = symbolic_binding T, 0 [symbolic] @@ -5097,7 +5121,8 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %RequiresA.type: type = fn_type @RequiresA [concrete] // CHECK:STDOUT: %RequiresA: %RequiresA.type = struct_value () [concrete] // CHECK:STDOUT: %require_complete.94f: = require_complete_type %T.as_type [symbolic] -// CHECK:STDOUT: %.Self.e4d: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.f7e: %B.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %B_where.type: type = facet_type <@B where TODO> [concrete] // CHECK:STDOUT: %pattern_type.831: type = pattern_type %B_where.type [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.831 = symbolic_binding_pattern U, 1 [symbolic] @@ -5140,7 +5165,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc6_29.1: @RequiresA.%pattern_type (%pattern_type.a0e) = at_binding_pattern x, %x.param_patt.loc6_29.1 [symbolic = %x.patt.loc6_29.2 (constants.%x.patt.19b)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_18: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_15.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc6_15.1 (constants.%T)] @@ -5160,24 +5185,29 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc7_45.1: @F.%pattern_type (%pattern_type.d51) = at_binding_pattern x, %x.param_patt.loc7_45.1 [symbolic = %x.patt.loc7_45.2 (constants.%x.patt.cdb)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.2 [concrete = constants.%B_where.type] { -// CHECK:STDOUT: %.Self.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %B.ref.loc7_17: type = name_ref B, file.%B.decl [concrete = constants.%B.type] -// CHECK:STDOUT: %.Self.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.e4d] -// CHECK:STDOUT: %.Self.ref: %B.type = name_ref .Self, %.Self.loc7_19 [symbolic_self = constants.%.Self.e4d] +// CHECK:STDOUT: %.Self.frozen.loc7_19: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.f7e] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref.loc7_17 [concrete] +// CHECK:STDOUT: %.Self.ref.loc7_25.1: %B.type = name_ref .Self, %.Self.frozen.loc7_19 [symbolic_self = constants.%.Self.frozen.f7e] // CHECK:STDOUT: %T.ref.loc7: %A.type = name_ref T, %T.loc7_7.2 [symbolic = %T.loc7_7.1 (constants.%T)] +// CHECK:STDOUT: %equiv.loc7_31.1 = requirement_equivalent %.Self.ref.loc7_25.1, %T.ref.loc7 [concrete] +// CHECK:STDOUT: %.Self: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc7_25.2: %B.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref.loc7 [concrete] // CHECK:STDOUT: %.loc7_19.2: type = where_expr [concrete = constants.%B_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %B.ref.loc7_17 -// CHECK:STDOUT: requirement_equivalent %.Self.ref, %T.ref.loc7 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %B.ref.loc7_17 [concrete] +// CHECK:STDOUT: %equiv.loc7_31.2 = requirement_equivalent %.Self.ref.loc7_25.2, %T.ref.loc7 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_14.2: %B_where.type = symbolic_binding U, 1 [symbolic = %U.loc7_14.1 (constants.%U)] // CHECK:STDOUT: %.loc7_41: type = splice_block %B.ref.loc7_41 [concrete = constants.%B.type] { -// CHECK:STDOUT: %.Self.loc7_38: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_38: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %B.ref.loc7_41: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc7_38.2: %B.type = symbolic_binding V, 2 [symbolic = %V.loc7_38.1 (constants.%V)] @@ -5313,7 +5343,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.b45: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.029: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.029 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %A.type = symbolic_binding T, 0 [symbolic] @@ -5361,7 +5391,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc6_26.1: @TakesA.%pattern_type (%pattern_type.a0e) = at_binding_pattern x, %x.param_patt.loc6_26.1 [symbolic = %x.patt.loc6_26.2 (constants.%x.patt.19b)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_15: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_12.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc6_12.1 (constants.%T)] @@ -5380,12 +5410,12 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %x.patt.loc7_21.1: @F.%pattern_type (%pattern_type.d7b) = at_binding_pattern x, %x.param_patt.loc7_21.1 [symbolic = %x.patt.loc7_21.2 (constants.%x.patt.033)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_10: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] // CHECK:STDOUT: %.loc7_17: type = splice_block %B.ref [concrete = constants.%B.type] { -// CHECK:STDOUT: %.Self.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_14.2: %B.type = symbolic_binding U, 1 [symbolic = %U.loc7_14.1 (constants.%U)] @@ -5511,7 +5541,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -5542,12 +5572,12 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %U.patt.loc3_20.1: %pattern_type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc3_20.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_13.1: type = splice_block %.loc3_13.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc3_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_13.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_10.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_10.1 (constants.%T)] // CHECK:STDOUT: %.loc3_23.1: type = splice_block %.loc3_23.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc3_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_23.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc3_20.2: type = symbolic_binding U, 1 [symbolic = %U.loc3_20.1 (constants.%U)] @@ -5586,7 +5616,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -5616,12 +5646,12 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %U.patt.loc3_25.1: %pattern_type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc3_25.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc3_18.1: type = splice_block %.loc3_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc3_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc3_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc3_15.1 (constants.%T)] // CHECK:STDOUT: %.loc3_28.1: type = splice_block %.loc3_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc3_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc3_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc3_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc3_25.2: type = symbolic_binding U, 1 [symbolic = %U.loc3_25.1 (constants.%U)] @@ -5675,7 +5705,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete] // CHECK:STDOUT: %Self: %A.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %A.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %A.type = symbolic_binding T, 0 [symbolic] @@ -5706,7 +5736,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %T.patt.loc6_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %A.ref [concrete = constants.%A.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_7.2: %A.type = symbolic_binding T, 0 [symbolic = %T.loc6_7.1 (constants.%T)] @@ -5771,7 +5801,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.b45: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete] // CHECK:STDOUT: %BitAndWith.type.a06: type = generic_interface_type @BitAndWith [concrete] // CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.a06 = struct_value () [concrete] @@ -5844,7 +5874,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %T.patt.loc5_14.1: %pattern_type.827 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_19.1: type = splice_block %.loc5_19.3 [concrete = constants.%facet_type.8cb] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Destroy.ref: type = name_ref Destroy, imports.%Core.Destroy [concrete = constants.%Destroy.type] @@ -6067,7 +6097,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %A.impl_witness: = impl_witness @C.as.A.impl.%A.impl_witness_table [concrete] // CHECK:STDOUT: %A.facet: %A.type = facet_value %C, (%A.impl_witness) [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %I.type.335: type = generic_interface_type @I [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %I.generic: %I.type.335 = struct_value () [concrete] @@ -6218,7 +6248,7 @@ fn F[T:! I(C)](t: T) { // CHECK:STDOUT: %t.patt.loc8_17.1: @F.%pattern_type.loc8 (%pattern_type.cf2) = at_binding_pattern t, %t.param_patt.loc8_17.1 [symbolic = %t.patt.loc8_17.2 (constants.%t.patt.1b6)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_13.1: type = splice_block %I.type [concrete = constants.%I.type.8a7] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: %I.type.335 = name_ref I, imports.%Main.I [concrete = constants.%I.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %facet_value: %facet_type.8cb = facet_value %C.ref, (constants.%A.impl_witness, constants.%custom_witness.df9cc1.2) [concrete = constants.%facet_value] diff --git a/toolchain/check/testdata/interface/require.carbon b/toolchain/check/testdata/interface/require.carbon index ecccf916dd91..8fbf2a0fd1c7 100644 --- a/toolchain/check/testdata/interface/require.carbon +++ b/toolchain/check/testdata/interface/require.carbon @@ -693,13 +693,16 @@ interface Z(T:! type) { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self.cb6: %Z.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.cb6 [symbolic] -// CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self, @Y [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %Y.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.94c: = lookup_impl_witness %.Self.frozen, @Y [symbolic_self] +// CHECK:STDOUT: %impl.elem0.74a: type = impl_witness_access %Y.lookup_impl_witness.94c, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.9c7: = lookup_impl_witness %.Self, @Y [symbolic_self] +// CHECK:STDOUT: %impl.elem0.591: type = impl_witness_access %Y.lookup_impl_witness.9c7, element0 [symbolic_self] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0.591 = %empty_tuple.type> [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -716,17 +719,21 @@ interface Z(T:! type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.as_type.loc7_11.1: type = facet_access_type @Z.%Self [symbolic = %Self.as_type.loc7_11.2 (constants.%Self.as_type)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] -// CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %Y.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc7_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %Y.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %Y.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc7_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y1.ref: %Y.assoc_type = name_ref Y1, @Y1.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc7_25.1: type = impl_witness_access constants.%Y.lookup_impl_witness.94c, element0 [symbolic_self = constants.%impl.elem0.74a] // CHECK:STDOUT: %.loc7_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_32.2: type = converted %.loc7_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc7_29.1 = requirement_rewrite %impl.elem0.loc7_25.1, %.loc7_32.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc7_25.2: type = impl_witness_access constants.%Y.lookup_impl_witness.9c7, element0 [symbolic_self = constants.%impl.elem0.591] +// CHECK:STDOUT: %rewrite.loc7_29.2 = requirement_rewrite %impl.elem0.loc7_25.2, %.loc7_32.2 [concrete] // CHECK:STDOUT: %.loc7_19: type = where_expr [concrete = constants.%Y_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %Y.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc7_32.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %rewrite.loc7_29.2 = requirement_rewrite %impl.elem0.loc7_25.2, %.loc7_32.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -760,7 +767,7 @@ interface Z(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -777,7 +784,7 @@ interface Z(T:! type) { // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_17.1: type = splice_block %.loc4_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] @@ -863,11 +870,14 @@ interface Z(T:! type) { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self.cb6: %Z.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.cb6 [symbolic] +// CHECK:STDOUT: %.Self.frozen: %Y.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.94c: = lookup_impl_witness %.Self.frozen, @Y [symbolic_self] +// CHECK:STDOUT: %impl.elem0.74a: type = impl_witness_access %Y.lookup_impl_witness.94c, element0 [symbolic_self] // CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self, @Y [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0 = %Self.as_type> [symbolic] +// CHECK:STDOUT: %Y.lookup_impl_witness.9c7: = lookup_impl_witness %.Self, @Y [symbolic_self] +// CHECK:STDOUT: %impl.elem0.591: type = impl_witness_access %Y.lookup_impl_witness.9c7, element0 [symbolic_self] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0.591 = %Self.as_type> [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -884,18 +894,22 @@ interface Z(T:! type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.as_type.loc10_11.1: type = facet_access_type @Z.%Self [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] -// CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %Y.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %Y.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %Y.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y1.ref: %Y.assoc_type = name_ref Y1, @Y1.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_25.1: type = impl_witness_access constants.%Y.lookup_impl_witness.94c, element0 [symbolic_self = constants.%impl.elem0.74a] // CHECK:STDOUT: %Self.ref: %Z.type = name_ref Self, @Z.%Self [symbolic = %Self (constants.%Self.cb6)] // CHECK:STDOUT: %Self.as_type.loc10_31: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc10_31: type = converted %Self.ref, %Self.as_type.loc10_31 [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %rewrite.loc10_29.1 = requirement_rewrite %impl.elem0.loc10_25.1, %.loc10_31 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_25.2: type = impl_witness_access constants.%Y.lookup_impl_witness.9c7, element0 [symbolic_self = constants.%impl.elem0.591] +// CHECK:STDOUT: %rewrite.loc10_29.2 = requirement_rewrite %impl.elem0.loc10_25.2, %.loc10_31 [concrete] // CHECK:STDOUT: %.loc10_19: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type)] { -// CHECK:STDOUT: requirement_base_facet_type %Y.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_31 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_29.2 = requirement_rewrite %impl.elem0.loc10_25.2, %.loc10_31 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -916,7 +930,7 @@ interface Z(T:! type) { // CHECK:STDOUT: generic require @Z.WithSelf.Self.as_type.impls.Y_where.type.require(@Z.%Self: %Z.type) { // CHECK:STDOUT: %Self: %Z.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.cb6)] // CHECK:STDOUT: %Self.as_type.loc10_11.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where constants.%impl.elem0 = %Self.as_type.loc10_11.2> [symbolic = %Y_where.type (constants.%Y_where.type)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where constants.%impl.elem0.591 = %Self.as_type.loc10_11.2> [symbolic = %Y_where.type (constants.%Y_where.type)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Z.WithSelf(constants.%Self.cb6) {} @@ -931,7 +945,7 @@ interface Z(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -947,7 +961,7 @@ interface Z(T:! type) { // CHECK:STDOUT: %T.patt.loc8_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_17.1: type = splice_block %.loc8_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_14.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_14.1 (constants.%T)] diff --git a/toolchain/check/testdata/interface/syntactic_merge.carbon b/toolchain/check/testdata/interface/syntactic_merge.carbon index e52d8c432dc2..528f0863efcf 100644 --- a/toolchain/check/testdata/interface/syntactic_merge.carbon +++ b/toolchain/check/testdata/interface/syntactic_merge.carbon @@ -204,7 +204,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -232,7 +232,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc7_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref.loc7 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_16.1 (constants.%a)] @@ -241,7 +241,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc7_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8: type = splice_block %C.ref.loc8 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc8: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc8: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc8: %C = symbolic_binding a, 0 [symbolic = %a.loc7_16.1 (constants.%a)] @@ -250,7 +250,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc10_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10: type = splice_block %D.ref.loc10 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc10_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc10_16.1 (constants.%a)] @@ -259,7 +259,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc10_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11: type = splice_block %D.ref.loc11 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc11: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc11: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc11: %C = symbolic_binding a, 0 [symbolic = %a.loc10_16.1 (constants.%a)] @@ -339,7 +339,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -359,7 +359,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc6_23.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_23.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %C.ref.loc6 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_23.2: %C = symbolic_binding a, 0 [symbolic = %a.loc6_23.1 (constants.%a)] @@ -368,7 +368,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc6_23.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_23.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref.loc7 [concrete = constants.%C] { -// CHECK:STDOUT: %.Self.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7: %C = symbolic_binding a, 0 [symbolic = %a.loc6_23.1 (constants.%a)] @@ -419,7 +419,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -441,7 +441,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc6_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc6_16.1 (constants.%a)] @@ -450,7 +450,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc14_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc14_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc14_16.1 (constants.%a)] @@ -513,7 +513,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -535,7 +535,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc6_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc6_16.1 (constants.%a)] @@ -544,7 +544,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc14_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc14_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc14_16.1 (constants.%a)] @@ -607,7 +607,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -631,7 +631,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc7_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_16.1 (constants.%a)] @@ -640,7 +640,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc8_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc8_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc8_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc8_16.1 (constants.%a)] @@ -683,7 +683,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -728,7 +728,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc12_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc12_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc12_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc12_16.1 (constants.%a)] @@ -737,7 +737,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc21_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc21_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc21_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc21_16.1 (constants.%a)] @@ -840,7 +840,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -867,7 +867,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc7_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_16.1 (constants.%a)] @@ -876,7 +876,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %b.patt.loc15_16.1: %pattern_type = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc15_16.2 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %b.loc15_16.2: %C = symbolic_binding b, 0 [symbolic = %b.loc15_16.1 (constants.%b)] @@ -939,7 +939,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -964,7 +964,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc7_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_16.1 (constants.%a)] @@ -973,7 +973,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc15_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc15_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc15_16.1 (constants.%a)] @@ -1036,7 +1036,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -1061,7 +1061,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc7_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc7_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc7_16.1 (constants.%a)] @@ -1070,7 +1070,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc15_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc15: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc15_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc15_16.1 (constants.%a)] @@ -1133,7 +1133,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -1151,7 +1151,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc6_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %C.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc6_16.1 (constants.%a)] @@ -1185,7 +1185,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %a: %C = symbolic_binding a, 0 [symbolic] @@ -1219,7 +1219,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc17_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc17: type = splice_block %D.ref [concrete = constants.%C] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc17_16.2: %C = symbolic_binding a, 0 [symbolic = %a.loc17_16.1 (constants.%a)] @@ -1281,7 +1281,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %const: type = const_type %C [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %const [concrete] // CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [symbolic] @@ -1304,7 +1304,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc6_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6: type = splice_block %const [concrete = constants.%const] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %const: type = const_type %C.ref [concrete = constants.%const] // CHECK:STDOUT: } @@ -1314,7 +1314,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc18_16.1: %pattern_type = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc18_16.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18: type = splice_block %const.loc18_19 [concrete = constants.%const] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %const.loc18_26: type = const_type %C.ref [concrete = constants.%const] // CHECK:STDOUT: %const.loc18_19: type = const_type %const.loc18_26 [concrete = constants.%const] diff --git a/toolchain/check/testdata/interop/cpp/class/import/field.carbon b/toolchain/check/testdata/interop/cpp/class/import/field.carbon index 5cf4fde81a9b..b164816a7547 100644 --- a/toolchain/check/testdata/interop/cpp/class/import/field.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/field.carbon @@ -219,17 +219,17 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Get.type.196: type = fn_type @ptr.as.OptionalStorage.impl.Get, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Get.147: %ptr.as.OptionalStorage.impl.Get.type.196 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalStorage.impl_witness.faa: = impl_witness imports.%OptionalStorage.impl_witness_table.517, @ptr.as.OptionalStorage.impl(%i32) [concrete] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.d08, (%OptionalStorage.impl_witness.faa) [concrete] -// CHECK:STDOUT: %Optional.815: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %Struct.elem.690: type = unbound_element_type %Struct, %Optional.815 [concrete] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Get.type.1cb: type = fn_type @ptr.as.OptionalStorage.impl.Get, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Get.114: %ptr.as.OptionalStorage.impl.Get.type.1cb = struct_value () [symbolic] +// CHECK:STDOUT: %OptionalStorage.impl_witness.ff3: = impl_witness imports.%OptionalStorage.impl_witness_table.553, @ptr.as.OptionalStorage.impl(%i32) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.d08, (%OptionalStorage.impl_witness.ff3) [concrete] +// CHECK:STDOUT: %Optional.0ce: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Struct.elem.db3: type = unbound_element_type %Struct, %Optional.0ce [concrete] // CHECK:STDOUT: %const.e2a: type = const_type %ptr.d08 [concrete] // CHECK:STDOUT: %Struct.elem.6a0: type = unbound_element_type %Struct, %const.e2a [concrete] -// CHECK:STDOUT: %Optional.Get.type.e91: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %Optional.Get.8af: %Optional.Get.type.e91 = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.8af, @Optional.Get(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Optional.Get.type.c85: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Optional.Get.b7c: %Optional.Get.type.c85 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.b7c, @Optional.Get(%OptionalStorage.facet) [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] // CHECK:STDOUT: %Copy.impl_witness.0e0: = impl_witness imports.%Copy.impl_witness_table.367, @Int.as.Copy.impl(%int_32) [concrete] @@ -244,12 +244,12 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.497: @Optional.%Optional.Get.type (%Optional.Get.type.bb9) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.fa1)] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.a6e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.96f: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Get.type (%ptr.as.OptionalStorage.impl.Get.type.196) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Get (constants.%ptr.as.OptionalStorage.impl.Get.147)] -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.517 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.a6e, %Core.import_ref.274, %Core.import_ref.96f, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.228 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e3e: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Get.type (%ptr.as.OptionalStorage.impl.Get.type.1cb) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Get (constants.%ptr.as.OptionalStorage.impl.Get.114)] +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.553 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.228, %Core.import_ref.ee7, %Core.import_ref.e3e, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)] // CHECK:STDOUT: %Copy.impl_witness_table.367 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete] // CHECK:STDOUT: } @@ -270,11 +270,11 @@ fn Test(m: Cpp.UnsupportedMembers*) { // CHECK:STDOUT: %.loc8_23.2: %ptr.d08 = acquire_value %.loc8_23.1 // CHECK:STDOUT: %.loc8_21.1: ref %i32 = deref %.loc8_23.2 // CHECK:STDOUT: %s.ref.loc8_28: %Struct = name_ref s, %s -// CHECK:STDOUT: %q.ref: %Struct.elem.690 = name_ref q, @Struct.%.5 [concrete = @Struct.%.5] -// CHECK:STDOUT: %.loc8_29.1: ref %Optional.815 = class_element_access %s.ref.loc8_28, element3 -// CHECK:STDOUT: %.loc8_29.2: %Optional.815 = acquire_value %.loc8_29.1 -// CHECK:STDOUT: %.loc8_31: %Optional.Get.type.e91 = specific_constant imports.%Core.import_ref.497, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Get.8af] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.e91 = name_ref Get, %.loc8_31 [concrete = constants.%Optional.Get.8af] +// CHECK:STDOUT: %q.ref: %Struct.elem.db3 = name_ref q, @Struct.%.5 [concrete = @Struct.%.5] +// CHECK:STDOUT: %.loc8_29.1: ref %Optional.0ce = class_element_access %s.ref.loc8_28, element3 +// CHECK:STDOUT: %.loc8_29.2: %Optional.0ce = acquire_value %.loc8_29.1 +// CHECK:STDOUT: %.loc8_31: %Optional.Get.type.c85 = specific_constant imports.%Core.import_ref.497, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Get.b7c] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.c85 = name_ref Get, %.loc8_31 [concrete = constants.%Optional.Get.b7c] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc8_29.2, %Get.ref // CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc8_36: = bound_method %.loc8_29.2, %Optional.Get.specific_fn diff --git a/toolchain/check/testdata/interop/cpp/function/export/generic.carbon b/toolchain/check/testdata/interop/cpp/function/export/generic.carbon index 0000f96c03b4..fcbfe3f965d8 100644 --- a/toolchain/check/testdata/interop/cpp/function/export/generic.carbon +++ b/toolchain/check/testdata/interop/cpp/function/export/generic.carbon @@ -177,7 +177,7 @@ void G() { // CHECK:STDOUT: %I.WithSelf.Doit.type.2ce: type = fn_type @I.WithSelf.Doit, @I.WithSelf(%I.facet.9f8) [concrete] // CHECK:STDOUT: %I.WithSelf.Doit.450: %I.WithSelf.Doit.type.2ce = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.6cb = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] @@ -235,7 +235,7 @@ void G() { // CHECK:STDOUT: %t.patt.loc20_14.1: @F.%pattern_type (%pattern_type.b3a) = at_binding_pattern t, %t.param_patt.loc20_14.1 [symbolic = %t.patt.loc20_14.2 (constants.%t.patt.030)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_10: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20_7.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc20_7.1 (constants.%T)] diff --git a/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_bridged.carbon b/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_bridged.carbon index 4f53313c7893..3ab9dfa36e49 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_bridged.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_bridged.carbon @@ -677,8 +677,8 @@ fn F() { // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.802: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.765: type = fn_type_with_self_type %Negate.WithSelf.Op.type.802, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete] @@ -748,7 +748,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %impl.elem1: %.765 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_1) [concrete = constants.%int_-1.638] // CHECK:STDOUT: %impl.elem0.loc8_11.1: %.003 = impl_witness_access constants.%ImplicitAs.impl_witness.925, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.868] @@ -1327,8 +1327,8 @@ fn F() { // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.802: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.765: type = fn_type_with_self_type %Negate.WithSelf.Op.type.802, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_32768, %Core.IntLiteral.as.Negate.impl.Op [concrete] @@ -1398,7 +1398,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %int_32768: Core.IntLiteral = int_value 32768 [concrete = constants.%int_32768] -// CHECK:STDOUT: %impl.elem1: %.765 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_32768, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_32768) [concrete = constants.%int_-32768.882] // CHECK:STDOUT: %impl.elem0.loc8_11.1: %.769 = impl_witness_access constants.%ImplicitAs.impl_witness.884, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.0c0] diff --git a/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_direct.carbon b/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_direct.carbon index 6614156238b9..afbd3a0f5a03 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_direct.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/arithmetic_types_direct.carbon @@ -446,8 +446,8 @@ fn F() { // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.802: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.765: type = fn_type_with_self_type %Negate.WithSelf.Op.type.802, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_2147483648, %Core.IntLiteral.as.Negate.impl.Op [concrete] @@ -495,7 +495,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %int_2147483648: Core.IntLiteral = int_value 2147483648 [concrete = constants.%int_2147483648] -// CHECK:STDOUT: %impl.elem1: %.765 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_2147483648, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_2147483648) [concrete = constants.%int_-2147483648.3b9] // CHECK:STDOUT: %impl.elem0: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] diff --git a/toolchain/check/testdata/interop/cpp/function/import/decayed_param.carbon b/toolchain/check/testdata/interop/cpp/function/import/decayed_param.carbon index 20df42c0a1e5..28ed4dc01269 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/decayed_param.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/decayed_param.carbon @@ -124,51 +124,51 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.d38: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.191: %ptr.as.OptionalStorage.impl.Some.type.d38 = struct_value () [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.703: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.467: %ptr.as.OptionalStorage.impl.None.type.703 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.e93: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.083: %ptr.as.OptionalStorage.impl.Some.type.e93 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.d5a: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.837: %ptr.as.OptionalStorage.impl.None.type.d5a = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.4c4: %Destroy.type = facet_value %ptr.d08, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.b84: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.4c4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.16a: = impl_witness imports.%OptionalStorage.impl_witness_table.271, @ptr.as.OptionalStorage.impl(%i32) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.5c5: = impl_witness imports.%OptionalStorage.impl_witness_table.a04, @ptr.as.OptionalStorage.impl(%i32) [concrete] // CHECK:STDOUT: %.0f8: type = maybe_unformed_type %ptr.d08 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.472: %OptionalStorage.type = facet_value %ptr.d08, (%OptionalStorage.impl_witness.16a) [concrete] -// CHECK:STDOUT: %Optional.c4d: type = class_type @Optional, @Optional(%OptionalStorage.facet.472) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.e9e: %OptionalStorage.type = facet_value %ptr.d08, (%OptionalStorage.impl_witness.5c5) [concrete] +// CHECK:STDOUT: %Optional.cd0: type = class_type @Optional, @Optional(%OptionalStorage.facet.e9e) [concrete] // CHECK:STDOUT: %TakesArray.type: type = fn_type @TakesArray [concrete] // CHECK:STDOUT: %TakesArray: %TakesArray.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.6a3: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.c4d)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.733: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.cd0)> [concrete] // CHECK:STDOUT: %OptionalAs.type.3b8: type = facet_type <@OptionalAs, @OptionalAs(%T.220)> [symbolic] // CHECK:STDOUT: %U.042: %OptionalAs.type.3b8 = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%T.220, %U.042) [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.331: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.type.c54: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.472)> [concrete] +// CHECK:STDOUT: %OptionalAs.type.9e6: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.e9e)> [concrete] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.type.774: type = fn_type @T.as_type.as.OptionalAs.impl.Convert, @T.as_type.as.OptionalAs.impl(%T.220) [symbolic] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.5f9: %T.as_type.as.OptionalAs.impl.Convert.type.774 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.impl_witness.ea6: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.472) [concrete] -// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.c54 = facet_value %ptr.d08, (%OptionalAs.impl_witness.ea6) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.20e: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.472, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.86c: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.472, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.cdb: %U.as_type.as.ImplicitAs.impl.Convert.type.86c = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.c29: %ImplicitAs.type.6a3 = facet_value %ptr.d08, (%ImplicitAs.impl_witness.20e) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.6d8: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.c4d, %ImplicitAs.facet.c29) [concrete] -// CHECK:STDOUT: %.671: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.6d8, %ImplicitAs.facet.c29 [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.cdb, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.472, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %OptionalAs.impl_witness.6fc: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.e9e) [concrete] +// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.9e6 = facet_value %ptr.d08, (%OptionalAs.impl_witness.6fc) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.67f: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.e9e, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.b8f: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.e9e, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.968: %U.as_type.as.ImplicitAs.impl.Convert.type.b8f = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.4ba: %ImplicitAs.type.733 = facet_value %ptr.d08, (%ImplicitAs.impl_witness.67f) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.b02: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.cd0, %ImplicitAs.facet.4ba) [concrete] +// CHECK:STDOUT: %.0a4: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.b02, %ImplicitAs.facet.4ba [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.968, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.e9e, %OptionalAs.facet) [concrete] // CHECK:STDOUT: %Cpp.nullptr_t: type = class_type @NullptrT [concrete] // CHECK:STDOUT: %uninit: %Cpp.nullptr_t = uninitialized_value [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.99b: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.63e: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.99b = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.559: = impl_witness imports.%ImplicitAs.impl_witness_table.1ed, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.803: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.3b7: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.803 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.4d9: %ImplicitAs.type.6a3 = facet_value %Cpp.nullptr_t, (%ImplicitAs.impl_witness.559) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.f45: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.c4d, %ImplicitAs.facet.4d9) [concrete] -// CHECK:STDOUT: %.163: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.f45, %ImplicitAs.facet.4d9 [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.bound: = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.3b7 [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.3b7, @Cpp.nullptr_t.as.ImplicitAs.impl.Convert(%i32) [concrete] -// CHECK:STDOUT: %bound_method.f6e: = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.e28: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.495: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.e28 = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.9cd: = impl_witness imports.%ImplicitAs.impl_witness_table.725, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.16d: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.0b4: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.16d = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.e7a: %ImplicitAs.type.733 = facet_value %Cpp.nullptr_t, (%ImplicitAs.impl_witness.9cd) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.c98: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.cd0, %ImplicitAs.facet.e7a) [concrete] +// CHECK:STDOUT: %.d9a8a: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.c98, %ImplicitAs.facet.e7a [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.bound: = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.0b4 [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.0b4, @Cpp.nullptr_t.as.ImplicitAs.impl.Convert(%i32) [concrete] +// CHECK:STDOUT: %bound_method.480: = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.5: type = fn_type @Destroy.Op.loc13_21.3 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.5: %Destroy.Op.type.1d8f74.5 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.8: type = fn_type @Destroy.Op.loc10_3.3 [concrete] @@ -189,21 +189,21 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.edf: @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.0e9.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.845)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.b3c = impl_witness_table (%Core.import_ref.edf), @Core.IntLiteral.as.ImplicitAs.impl.0e9 [concrete] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.df2: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.703) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.467)] -// CHECK:STDOUT: %Core.import_ref.d86: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.d38) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.191)] -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.271 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.df2, %Core.import_ref.d86, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.cde8: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.d5a) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.837)] +// CHECK:STDOUT: %Core.import_ref.66a: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.e93) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.083)] +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.a04 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.cde8, %Core.import_ref.66a, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %TakesArray.decl: %TakesArray.type = fn_decl @TakesArray [concrete = constants.%TakesArray] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc11_23.1: type = splice_block %Optional [concrete = constants.%Optional.c4d] { +// CHECK:STDOUT: %.loc11_23.1: type = splice_block %Optional [concrete = constants.%Optional.cd0] { // CHECK:STDOUT: -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.d08, (constants.%OptionalStorage.impl_witness.16a) [concrete = constants.%OptionalStorage.facet.472] -// CHECK:STDOUT: %.loc11_23.2: %OptionalStorage.type = converted constants.%ptr.d08, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.472] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.472) [concrete = constants.%Optional.c4d] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.d08, (constants.%OptionalStorage.impl_witness.5c5) [concrete = constants.%OptionalStorage.facet.e9e] +// CHECK:STDOUT: %.loc11_23.2: %OptionalStorage.type = converted constants.%ptr.d08, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.e9e] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.e9e) [concrete = constants.%Optional.cd0] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -211,8 +211,8 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.impl_witness_table.cf7 = impl_witness_table (%Core.import_ref.eb9), @U.as_type.as.ImplicitAs.impl.167 [concrete] // CHECK:STDOUT: %Core.import_ref.017d8: @T.as_type.as.OptionalAs.impl.%T.as_type.as.OptionalAs.impl.Convert.type (%T.as_type.as.OptionalAs.impl.Convert.type.774) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.OptionalAs.impl.%T.as_type.as.OptionalAs.impl.Convert (constants.%T.as_type.as.OptionalAs.impl.Convert.5f9)] // CHECK:STDOUT: %OptionalAs.impl_witness_table.efa = impl_witness_table (%Core.import_ref.017d8), @T.as_type.as.OptionalAs.impl [concrete] -// CHECK:STDOUT: %Core.import_ref.599: @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type (%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.99b) = import_ref Core//prelude/types/cpp/nullptr, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert (constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.63e)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.1ed = impl_witness_table (%Core.import_ref.599), @Cpp.nullptr_t.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.50f8: @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type (%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.e28) = import_ref Core//prelude/types/cpp/nullptr, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert (constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.495)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.725 = impl_witness_table (%Core.import_ref.50f8), @Cpp.nullptr_t.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -249,30 +249,30 @@ fn F() { // CHECK:STDOUT: %.loc11_21.2: %i32 = converted %int_0, %.loc11_21.1 [concrete = constants.%int_0.3c0] // CHECK:STDOUT: %.loc11_22: ref %i32 = array_index %n.ref, %.loc11_21.2 // CHECK:STDOUT: %addr: %ptr.d08 = addr_of %.loc11_22 -// CHECK:STDOUT: %impl.elem0.loc11_18: %.671 = impl_witness_access constants.%ImplicitAs.impl_witness.20e, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.cdb] +// CHECK:STDOUT: %impl.elem0.loc11_18: %.0a4 = impl_witness_access constants.%ImplicitAs.impl_witness.67f, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.968] // CHECK:STDOUT: %bound_method.loc11_18.1: = bound_method %addr, %impl.elem0.loc11_18 -// CHECK:STDOUT: %specific_fn.loc11_18: = specific_function %impl.elem0.loc11_18, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.472, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc11_18: = specific_function %impl.elem0.loc11_18, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.e9e, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_18.2: = bound_method %addr, %specific_fn.loc11_18 -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.c4d = call %bound_method.loc11_18.2(%addr) -// CHECK:STDOUT: %.loc11_18.1: init %Optional.c4d = converted %addr, %U.as_type.as.ImplicitAs.impl.Convert.call -// CHECK:STDOUT: %.loc11_18.2: ref %Optional.c4d = temporary_storage -// CHECK:STDOUT: %.loc11_18.3: ref %Optional.c4d = temporary %.loc11_18.2, %.loc11_18.1 -// CHECK:STDOUT: %.loc11_18.4: %Optional.c4d = acquire_value %.loc11_18.3 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.cd0 = call %bound_method.loc11_18.2(%addr) +// CHECK:STDOUT: %.loc11_18.1: init %Optional.cd0 = converted %addr, %U.as_type.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc11_18.2: ref %Optional.cd0 = temporary_storage +// CHECK:STDOUT: %.loc11_18.3: ref %Optional.cd0 = temporary %.loc11_18.2, %.loc11_18.1 +// CHECK:STDOUT: %.loc11_18.4: %Optional.cd0 = acquire_value %.loc11_18.3 // CHECK:STDOUT: %TakesArray.call.loc11: init %empty_tuple.type = call imports.%TakesArray.decl(%.loc11_18.4) // CHECK:STDOUT: %Cpp.ref.loc13_3: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %TakesArray.ref.loc13: %TakesArray.cpp_overload_set.type = name_ref TakesArray, imports.%TakesArray.cpp_overload_set.value [concrete = constants.%TakesArray.cpp_overload_set.value] // CHECK:STDOUT: %Cpp.ref.loc13_18: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %nullptr.ref: %Cpp.nullptr_t = name_ref nullptr, %uninit [concrete = constants.%uninit] -// CHECK:STDOUT: %impl.elem0.loc13: %.163 = impl_witness_access constants.%ImplicitAs.impl_witness.559, element0 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.3b7] +// CHECK:STDOUT: %impl.elem0.loc13: %.d9a8a = impl_witness_access constants.%ImplicitAs.impl_witness.9cd, element0 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.0b4] // CHECK:STDOUT: %bound_method.loc13_21.1: = bound_method %nullptr.ref, %impl.elem0.loc13 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn.loc13: = specific_function %impl.elem0.loc13, @Cpp.nullptr_t.as.ImplicitAs.impl.Convert(constants.%i32) [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc13_21.2: = bound_method %nullptr.ref, %specific_fn.loc13 [concrete = constants.%bound_method.f6e] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call: init %Optional.c4d = call %bound_method.loc13_21.2(%nullptr.ref) -// CHECK:STDOUT: %.loc13_21.1: init %Optional.c4d = converted %nullptr.ref, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call -// CHECK:STDOUT: %.loc13_21.2: ref %Optional.c4d = temporary_storage -// CHECK:STDOUT: %.loc13_21.3: ref %Optional.c4d = temporary %.loc13_21.2, %.loc13_21.1 -// CHECK:STDOUT: %.loc13_21.4: %Optional.c4d = acquire_value %.loc13_21.3 +// CHECK:STDOUT: %bound_method.loc13_21.2: = bound_method %nullptr.ref, %specific_fn.loc13 [concrete = constants.%bound_method.480] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call: init %Optional.cd0 = call %bound_method.loc13_21.2(%nullptr.ref) +// CHECK:STDOUT: %.loc13_21.1: init %Optional.cd0 = converted %nullptr.ref, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc13_21.2: ref %Optional.cd0 = temporary_storage +// CHECK:STDOUT: %.loc13_21.3: ref %Optional.cd0 = temporary %.loc13_21.2, %.loc13_21.1 +// CHECK:STDOUT: %.loc13_21.4: %Optional.cd0 = acquire_value %.loc13_21.3 // CHECK:STDOUT: %TakesArray.call.loc13: init %empty_tuple.type = call imports.%TakesArray.decl(%.loc13_21.4) // CHECK:STDOUT: %Destroy.Op.bound.loc13: = bound_method %.loc13_21.3, constants.%Destroy.Op.1a2547.5 // CHECK:STDOUT: %Destroy.Op.call.loc13: init %empty_tuple.type = call %Destroy.Op.bound.loc13(%.loc13_21.3) @@ -299,7 +299,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc13_21.3(%self.param: ref %Optional.c4d) { +// CHECK:STDOUT: fn @Destroy.Op.loc13_21.3(%self.param: ref %Optional.cd0) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/import/overloads.carbon b/toolchain/check/testdata/interop/cpp/function/import/overloads.carbon index 027a27828cf8..8dd3bbc061d3 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/overloads.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/overloads.carbon @@ -1910,8 +1910,8 @@ fn F() { // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.802: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.765: type = fn_type_with_self_type %Negate.WithSelf.Op.type.802, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete] @@ -1996,7 +1996,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %impl.elem1: %.765 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc8_11.1: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc8_11.1(%int_1) [concrete = constants.%int_-1.638] // CHECK:STDOUT: %impl.elem0: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39] @@ -2028,8 +2028,8 @@ fn F() { // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.802: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.765: type = fn_type_with_self_type %Negate.WithSelf.Op.type.802, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.f03: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.02b: type = fn_type_with_self_type %Negate.WithSelf.Op.type.f03, %Negate.facet [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.type: type = fn_type @Core.IntLiteral.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op: %Core.IntLiteral.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.bound: = bound_method %int_1, %Core.IntLiteral.as.Negate.impl.Op [concrete] @@ -2114,7 +2114,7 @@ fn F() { // CHECK:STDOUT: %Cpp.ref: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1] -// CHECK:STDOUT: %impl.elem1: %.765 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.02b = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc15_11.1: = bound_method %int_1, %impl.elem1 [concrete = constants.%Core.IntLiteral.as.Negate.impl.Op.bound] // CHECK:STDOUT: %Core.IntLiteral.as.Negate.impl.Op.call: init Core.IntLiteral = call %bound_method.loc15_11.1(%int_1) [concrete = constants.%int_-1.638] // CHECK:STDOUT: %impl.elem0: %.22b = impl_witness_access constants.%ImplicitAs.impl_witness.0a1, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.9db] @@ -4033,7 +4033,7 @@ fn F() { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %Self: %I.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6cb: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %ValueT.patt: %pattern_type.6cb = symbolic_binding_pattern ValueT, 0 [symbolic] // CHECK:STDOUT: %ValueT: %I.type = symbolic_binding ValueT, 0 [symbolic] @@ -4079,12 +4079,12 @@ fn F() { // CHECK:STDOUT: %value.patt.loc10_38.1: @EchoValue.%pattern_type (%pattern_type.b3a) = symbolic_binding_pattern value, 1 [symbolic = %value.patt.loc10_38.2 (constants.%value.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_23: type = splice_block %I.ref [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self.loc10_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc10_20: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %ValueT.loc10_20.2: %I.type = symbolic_binding ValueT, 0 [symbolic = %ValueT.loc10_20.1 (constants.%ValueT)] // CHECK:STDOUT: %.loc10_41.1: type = splice_block %.loc10_41.2 [symbolic = %ValueT.as_type.loc10_41.1 (constants.%ValueT.as_type)] { -// CHECK:STDOUT: %.Self.loc10_38: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc10_38: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %ValueT.ref: %I.type = name_ref ValueT, %ValueT.loc10_20.2 [symbolic = %ValueT.loc10_20.1 (constants.%ValueT)] // CHECK:STDOUT: %ValueT.as_type.loc10_41.2: type = facet_access_type %ValueT.ref [symbolic = %ValueT.as_type.loc10_41.1 (constants.%ValueT.as_type)] // CHECK:STDOUT: %.loc10_41.2: type = converted %ValueT.ref, %ValueT.as_type.loc10_41.2 [symbolic = %ValueT.as_type.loc10_41.1 (constants.%ValueT.as_type)] diff --git a/toolchain/check/testdata/interop/cpp/function/import/pointer.carbon b/toolchain/check/testdata/interop/cpp/function/import/pointer.carbon index 822e48e8046b..6636a46959c7 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/pointer.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/pointer.carbon @@ -968,20 +968,20 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.d38: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.191: %ptr.as.OptionalStorage.impl.Some.type.d38 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.e93: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.083: %ptr.as.OptionalStorage.impl.Some.type.e93 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.5b4: %Destroy.type = facet_value %ptr.037, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.9f2: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.5b4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.582: = impl_witness imports.%OptionalStorage.impl_witness_table.7bc, @ptr.as.OptionalStorage.impl(%S) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.043: = impl_witness imports.%OptionalStorage.impl_witness_table.538, @ptr.as.OptionalStorage.impl(%S) [concrete] // CHECK:STDOUT: %.08a0: type = maybe_unformed_type %ptr.037 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.0ce: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.582) [concrete] -// CHECK:STDOUT: %Optional.659: type = class_type @Optional, @Optional(%OptionalStorage.facet.0ce) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.0d5: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.043) [concrete] +// CHECK:STDOUT: %Optional.0c8: type = class_type @Optional, @Optional(%OptionalStorage.facet.0d5) [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.1c1: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.659)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.2a2: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.0c8)> [concrete] // CHECK:STDOUT: %ImplicitAs.type.3aa489.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T.67d)> [symbolic] // CHECK:STDOUT: %U.294: %ImplicitAs.type.3aa489.2 = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.type.f7e: type = fn_type @const.as.ImplicitAs.impl.Convert, @const.as.ImplicitAs.impl(%T.67d, %U.294) [symbolic] @@ -990,20 +990,20 @@ fn F() { // CHECK:STDOUT: %U.042: %OptionalAs.type.3b8 = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%T.220, %U.042) [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.331: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.type.561: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.0ce)> [concrete] +// CHECK:STDOUT: %OptionalAs.type.862: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.0d5)> [concrete] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.type.774: type = fn_type @T.as_type.as.OptionalAs.impl.Convert, @T.as_type.as.OptionalAs.impl(%T.220) [symbolic] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.5f9: %T.as_type.as.OptionalAs.impl.Convert.type.774 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.impl_witness.72e: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.0ce) [concrete] -// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.561 = facet_value %ptr.037, (%OptionalAs.impl_witness.72e) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.d0f: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.21e: %ImplicitAs.type.1c1 = facet_value %ptr.037, (%ImplicitAs.impl_witness.d0f) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.326: = impl_witness imports.%ImplicitAs.impl_witness_table.b0d, @const.as.ImplicitAs.impl(%Optional.659, %ImplicitAs.facet.21e) [concrete] -// CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.type.9f5: type = fn_type @const.as.ImplicitAs.impl.Convert, @const.as.ImplicitAs.impl(%Optional.659, %ImplicitAs.facet.21e) [concrete] -// CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.1e5: %const.as.ImplicitAs.impl.Convert.type.9f5 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.9d6: %ImplicitAs.type.1c1 = facet_value %const.f96, (%ImplicitAs.impl_witness.326) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.9f9: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.659, %ImplicitAs.facet.9d6) [concrete] -// CHECK:STDOUT: %.ba9: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.9f9, %ImplicitAs.facet.9d6 [concrete] -// CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %const.as.ImplicitAs.impl.Convert.1e5, @const.as.ImplicitAs.impl.Convert(%Optional.659, %ImplicitAs.facet.21e) [concrete] +// CHECK:STDOUT: %OptionalAs.impl_witness.aa2: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.0d5) [concrete] +// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.862 = facet_value %ptr.037, (%OptionalAs.impl_witness.aa2) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.1b5: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.424: %ImplicitAs.type.2a2 = facet_value %ptr.037, (%ImplicitAs.impl_witness.1b5) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.7b8: = impl_witness imports.%ImplicitAs.impl_witness_table.b0d, @const.as.ImplicitAs.impl(%Optional.0c8, %ImplicitAs.facet.424) [concrete] +// CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.type.491: type = fn_type @const.as.ImplicitAs.impl.Convert, @const.as.ImplicitAs.impl(%Optional.0c8, %ImplicitAs.facet.424) [concrete] +// CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.311: %const.as.ImplicitAs.impl.Convert.type.491 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.394: %ImplicitAs.type.2a2 = facet_value %const.f96, (%ImplicitAs.impl_witness.7b8) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.f6a: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.0c8, %ImplicitAs.facet.394) [concrete] +// CHECK:STDOUT: %.2bb: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.f6a, %ImplicitAs.facet.394 [concrete] +// CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %const.as.ImplicitAs.impl.Convert.311, @const.as.ImplicitAs.impl.Convert(%Optional.0c8, %ImplicitAs.facet.424) [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc11_11.3 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.4: %Destroy.Op.type.1d8f74.4 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.5: type = fn_type @Destroy.Op.loc10 [concrete] @@ -1019,20 +1019,20 @@ fn F() { // CHECK:STDOUT: %S.decl: type = class_decl @S [concrete = constants.%S] {} {} // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.d86: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.d38) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.191)] -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.7bc = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.d86, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.66a: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.e93) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.083)] +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.538 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.66a, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc11_12.1: type = splice_block %Optional [concrete = constants.%Optional.659] { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %.loc11_12.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0ce) [concrete = constants.%Optional.659] +// CHECK:STDOUT: %.loc11_12.1: type = splice_block %Optional [concrete = constants.%Optional.0c8] { +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %.loc11_12.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0d5) [concrete = constants.%Optional.0c8] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1064,16 +1064,16 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %p.ref: ref %const.f96 = name_ref p, %p -// CHECK:STDOUT: %impl.elem0: %.ba9 = impl_witness_access constants.%ImplicitAs.impl_witness.326, element0 [concrete = constants.%const.as.ImplicitAs.impl.Convert.1e5] +// CHECK:STDOUT: %impl.elem0: %.2bb = impl_witness_access constants.%ImplicitAs.impl_witness.7b8, element0 [concrete = constants.%const.as.ImplicitAs.impl.Convert.311] // CHECK:STDOUT: %bound_method.loc11_11.1: = bound_method %p.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @const.as.ImplicitAs.impl.Convert(constants.%Optional.659, constants.%ImplicitAs.facet.21e) [concrete = constants.%const.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @const.as.ImplicitAs.impl.Convert(constants.%Optional.0c8, constants.%ImplicitAs.facet.424) [concrete = constants.%const.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_11.2: = bound_method %p.ref, %specific_fn // CHECK:STDOUT: %.loc11_11.1: %const.f96 = acquire_value %p.ref -// CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.call: init %Optional.659 = call %bound_method.loc11_11.2(%.loc11_11.1) -// CHECK:STDOUT: %.loc11_11.2: init %Optional.659 = converted %p.ref, %const.as.ImplicitAs.impl.Convert.call -// CHECK:STDOUT: %.loc11_11.3: ref %Optional.659 = temporary_storage -// CHECK:STDOUT: %.loc11_11.4: ref %Optional.659 = temporary %.loc11_11.3, %.loc11_11.2 -// CHECK:STDOUT: %.loc11_11.5: %Optional.659 = acquire_value %.loc11_11.4 +// CHECK:STDOUT: %const.as.ImplicitAs.impl.Convert.call: init %Optional.0c8 = call %bound_method.loc11_11.2(%.loc11_11.1) +// CHECK:STDOUT: %.loc11_11.2: init %Optional.0c8 = converted %p.ref, %const.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc11_11.3: ref %Optional.0c8 = temporary_storage +// CHECK:STDOUT: %.loc11_11.4: ref %Optional.0c8 = temporary %.loc11_11.3, %.loc11_11.2 +// CHECK:STDOUT: %.loc11_11.5: %Optional.0c8 = acquire_value %.loc11_11.4 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc11_11.5) // CHECK:STDOUT: %Destroy.Op.bound.loc11: = bound_method %.loc11_11.4, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call.loc11: init %empty_tuple.type = call %Destroy.Op.bound.loc11(%.loc11_11.4) @@ -1098,7 +1098,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc11_11.3(%self.param: ref %Optional.659) { +// CHECK:STDOUT: fn @Destroy.Op.loc11_11.3(%self.param: ref %Optional.0c8) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -1133,36 +1133,36 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.d38: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.191: %ptr.as.OptionalStorage.impl.Some.type.d38 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.e93: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.083: %ptr.as.OptionalStorage.impl.Some.type.e93 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.5b4: %Destroy.type = facet_value %ptr.037, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.9f2: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.5b4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.582: = impl_witness imports.%OptionalStorage.impl_witness_table.7bc, @ptr.as.OptionalStorage.impl(%S) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.043: = impl_witness imports.%OptionalStorage.impl_witness_table.538, @ptr.as.OptionalStorage.impl(%S) [concrete] // CHECK:STDOUT: %.08a0: type = maybe_unformed_type %ptr.037 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.0ce: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.582) [concrete] -// CHECK:STDOUT: %Optional.659: type = class_type @Optional, @Optional(%OptionalStorage.facet.0ce) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.0d5: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.043) [concrete] +// CHECK:STDOUT: %Optional.0c8: type = class_type @Optional, @Optional(%OptionalStorage.facet.0d5) [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.1c1: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.659)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.2a2: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.0c8)> [concrete] // CHECK:STDOUT: %OptionalAs.type.3b8: type = facet_type <@OptionalAs, @OptionalAs(%T.220)> [symbolic] // CHECK:STDOUT: %U.042: %OptionalAs.type.3b8 = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%T.220, %U.042) [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.331: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.type.561: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.0ce)> [concrete] +// CHECK:STDOUT: %OptionalAs.type.862: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.0d5)> [concrete] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.type.774: type = fn_type @T.as_type.as.OptionalAs.impl.Convert, @T.as_type.as.OptionalAs.impl(%T.220) [symbolic] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.5f9: %T.as_type.as.OptionalAs.impl.Convert.type.774 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.impl_witness.72e: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.0ce) [concrete] -// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.561 = facet_value %ptr.037, (%OptionalAs.impl_witness.72e) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.d0f: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.cfa: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.8f4: %U.as_type.as.ImplicitAs.impl.Convert.type.cfa = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.21e: %ImplicitAs.type.1c1 = facet_value %ptr.037, (%ImplicitAs.impl_witness.d0f) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.c92: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.659, %ImplicitAs.facet.21e) [concrete] -// CHECK:STDOUT: %.c09: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.c92, %ImplicitAs.facet.21e [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.8f4, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %OptionalAs.impl_witness.aa2: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.0d5) [concrete] +// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.862 = facet_value %ptr.037, (%OptionalAs.impl_witness.aa2) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.1b5: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.553: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.593: %U.as_type.as.ImplicitAs.impl.Convert.type.553 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.424: %ImplicitAs.type.2a2 = facet_value %ptr.037, (%ImplicitAs.impl_witness.1b5) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.243: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.0c8, %ImplicitAs.facet.424) [concrete] +// CHECK:STDOUT: %.954: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.243, %ImplicitAs.facet.424 [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.593, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc11_11.3 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.4: %Destroy.Op.type.1d8f74.4 = struct_value () [concrete] // CHECK:STDOUT: } @@ -1176,20 +1176,20 @@ fn F() { // CHECK:STDOUT: %S.decl: type = class_decl @S [concrete = constants.%S] {} {} // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.d86: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.d38) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.191)] -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.7bc = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.d86, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.66a: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.e93) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.083)] +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.538 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.66a, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc11_12.1: type = splice_block %Optional [concrete = constants.%Optional.659] { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %.loc11_12.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0ce) [concrete = constants.%Optional.659] +// CHECK:STDOUT: %.loc11_12.1: type = splice_block %Optional [concrete = constants.%Optional.0c8] { +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %.loc11_12.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0d5) [concrete = constants.%Optional.0c8] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1218,16 +1218,16 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %p.ref: ref %ptr.037 = name_ref p, %p -// CHECK:STDOUT: %impl.elem0: %.c09 = impl_witness_access constants.%ImplicitAs.impl_witness.d0f, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.8f4] +// CHECK:STDOUT: %impl.elem0: %.954 = impl_witness_access constants.%ImplicitAs.impl_witness.1b5, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.593] // CHECK:STDOUT: %bound_method.loc11_11.1: = bound_method %p.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.0ce, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.0d5, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_11.2: = bound_method %p.ref, %specific_fn // CHECK:STDOUT: %.loc11_11.1: %ptr.037 = acquire_value %p.ref -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.659 = call %bound_method.loc11_11.2(%.loc11_11.1) -// CHECK:STDOUT: %.loc11_11.2: init %Optional.659 = converted %p.ref, %U.as_type.as.ImplicitAs.impl.Convert.call -// CHECK:STDOUT: %.loc11_11.3: ref %Optional.659 = temporary_storage -// CHECK:STDOUT: %.loc11_11.4: ref %Optional.659 = temporary %.loc11_11.3, %.loc11_11.2 -// CHECK:STDOUT: %.loc11_11.5: %Optional.659 = acquire_value %.loc11_11.4 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.0c8 = call %bound_method.loc11_11.2(%.loc11_11.1) +// CHECK:STDOUT: %.loc11_11.2: init %Optional.0c8 = converted %p.ref, %U.as_type.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc11_11.3: ref %Optional.0c8 = temporary_storage +// CHECK:STDOUT: %.loc11_11.4: ref %Optional.0c8 = temporary %.loc11_11.3, %.loc11_11.2 +// CHECK:STDOUT: %.loc11_11.5: %Optional.0c8 = acquire_value %.loc11_11.4 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc11_11.5) // CHECK:STDOUT: %Destroy.Op.bound.loc11: = bound_method %.loc11_11.4, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call.loc11: init %empty_tuple.type = call %Destroy.Op.bound.loc11(%.loc11_11.4) @@ -1252,7 +1252,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc11_11.3(%self.param: ref %Optional.659) { +// CHECK:STDOUT: fn @Destroy.Op.loc11_11.3(%self.param: ref %Optional.0c8) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -1421,36 +1421,36 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.d38: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.191: %ptr.as.OptionalStorage.impl.Some.type.d38 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.e93: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.083: %ptr.as.OptionalStorage.impl.Some.type.e93 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.5b4: %Destroy.type = facet_value %ptr.037, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.9f2: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.5b4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.582: = impl_witness imports.%OptionalStorage.impl_witness_table.7bc, @ptr.as.OptionalStorage.impl(%S) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.043: = impl_witness imports.%OptionalStorage.impl_witness_table.538, @ptr.as.OptionalStorage.impl(%S) [concrete] // CHECK:STDOUT: %.08a0: type = maybe_unformed_type %ptr.037 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.0ce: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.582) [concrete] -// CHECK:STDOUT: %Optional.659: type = class_type @Optional, @Optional(%OptionalStorage.facet.0ce) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.0d5: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.043) [concrete] +// CHECK:STDOUT: %Optional.0c8: type = class_type @Optional, @Optional(%OptionalStorage.facet.0d5) [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.1c1: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.659)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.2a2: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.0c8)> [concrete] // CHECK:STDOUT: %OptionalAs.type.3b8: type = facet_type <@OptionalAs, @OptionalAs(%T.220)> [symbolic] // CHECK:STDOUT: %U.042: %OptionalAs.type.3b8 = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%T.220, %U.042) [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.331: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.type.561: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.0ce)> [concrete] +// CHECK:STDOUT: %OptionalAs.type.862: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.0d5)> [concrete] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.type.774: type = fn_type @T.as_type.as.OptionalAs.impl.Convert, @T.as_type.as.OptionalAs.impl(%T.220) [symbolic] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.5f9: %T.as_type.as.OptionalAs.impl.Convert.type.774 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.impl_witness.72e: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.0ce) [concrete] -// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.561 = facet_value %ptr.037, (%OptionalAs.impl_witness.72e) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.d0f: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.cfa: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.8f4: %U.as_type.as.ImplicitAs.impl.Convert.type.cfa = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.21e: %ImplicitAs.type.1c1 = facet_value %ptr.037, (%ImplicitAs.impl_witness.d0f) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.c92: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.659, %ImplicitAs.facet.21e) [concrete] -// CHECK:STDOUT: %.c09: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.c92, %ImplicitAs.facet.21e [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.8f4, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %OptionalAs.impl_witness.aa2: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.0d5) [concrete] +// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.862 = facet_value %ptr.037, (%OptionalAs.impl_witness.aa2) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.1b5: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.553: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.593: %U.as_type.as.ImplicitAs.impl.Convert.type.553 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.424: %ImplicitAs.type.2a2 = facet_value %ptr.037, (%ImplicitAs.impl_witness.1b5) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.243: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.0c8, %ImplicitAs.facet.424) [concrete] +// CHECK:STDOUT: %.954: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.243, %ImplicitAs.facet.424 [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.593, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc9_11.3 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.4: %Destroy.Op.type.1d8f74.4 = struct_value () [concrete] // CHECK:STDOUT: %S.cpp_destructor.type: type = fn_type @S.cpp_destructor [concrete] @@ -1466,20 +1466,20 @@ fn F() { // CHECK:STDOUT: %S.decl: type = class_decl @S [concrete = constants.%S] {} {} // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.d86: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.d38) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.191)] -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.7bc = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.d86, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.66a: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.e93) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.083)] +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.538 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.66a, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc9_13.1: type = splice_block %Optional [concrete = constants.%Optional.659] { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %.loc9_13.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0ce) [concrete = constants.%Optional.659] +// CHECK:STDOUT: %.loc9_13.1: type = splice_block %Optional [concrete = constants.%Optional.0c8] { +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %.loc9_13.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0d5) [concrete = constants.%Optional.0c8] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1509,15 +1509,15 @@ fn F() { // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %s.ref: ref %S = name_ref s, %s // CHECK:STDOUT: %addr: %ptr.037 = addr_of %s.ref -// CHECK:STDOUT: %impl.elem0: %.c09 = impl_witness_access constants.%ImplicitAs.impl_witness.d0f, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.8f4] +// CHECK:STDOUT: %impl.elem0: %.954 = impl_witness_access constants.%ImplicitAs.impl_witness.1b5, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.593] // CHECK:STDOUT: %bound_method.loc9_11.1: = bound_method %addr, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.0ce, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.0d5, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_11.2: = bound_method %addr, %specific_fn -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.659 = call %bound_method.loc9_11.2(%addr) -// CHECK:STDOUT: %.loc9_11.1: init %Optional.659 = converted %addr, %U.as_type.as.ImplicitAs.impl.Convert.call -// CHECK:STDOUT: %.loc9_11.2: ref %Optional.659 = temporary_storage -// CHECK:STDOUT: %.loc9_11.3: ref %Optional.659 = temporary %.loc9_11.2, %.loc9_11.1 -// CHECK:STDOUT: %.loc9_11.4: %Optional.659 = acquire_value %.loc9_11.3 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.0c8 = call %bound_method.loc9_11.2(%addr) +// CHECK:STDOUT: %.loc9_11.1: init %Optional.0c8 = converted %addr, %U.as_type.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc9_11.2: ref %Optional.0c8 = temporary_storage +// CHECK:STDOUT: %.loc9_11.3: ref %Optional.0c8 = temporary %.loc9_11.2, %.loc9_11.1 +// CHECK:STDOUT: %.loc9_11.4: %Optional.0c8 = acquire_value %.loc9_11.3 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc9_11.4) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc9_11.3, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc9_11.3) @@ -1542,7 +1542,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc9_11.3(%self.param: ref %Optional.659) { +// CHECK:STDOUT: fn @Destroy.Op.loc9_11.3(%self.param: ref %Optional.0c8) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -1569,20 +1569,20 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.703: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.467: %ptr.as.OptionalStorage.impl.None.type.703 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.d5a: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.837: %ptr.as.OptionalStorage.impl.None.type.d5a = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.5b4: %Destroy.type = facet_value %ptr.037, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.9f2: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.5b4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.725: = impl_witness imports.%OptionalStorage.impl_witness_table.aa4, @ptr.as.OptionalStorage.impl(%S) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.741: = impl_witness imports.%OptionalStorage.impl_witness_table.319, @ptr.as.OptionalStorage.impl(%S) [concrete] // CHECK:STDOUT: %.08a: type = maybe_unformed_type %ptr.037 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.725) [concrete] -// CHECK:STDOUT: %Optional.db1: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %Optional.None.type.fc8: type = fn_type @Optional.None, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %Optional.None.9d4: %Optional.None.type.fc8 = struct_value () [concrete] -// CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %Optional.None.9d4, @Optional.None(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.741) [concrete] +// CHECK:STDOUT: %Optional.679: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Optional.None.type.4a6: type = fn_type @Optional.None, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Optional.None.bed: %Optional.None.type.4a6 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %Optional.None.bed, @Optional.None(%OptionalStorage.facet) [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc8_38.3 [concrete] @@ -1606,20 +1606,20 @@ fn F() { // CHECK:STDOUT: %Core.import_ref.e9f: @Optional.%Optional.None.type (%Optional.None.type.bdc) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @Optional.%Optional.None (constants.%Optional.None.01e)] // CHECK:STDOUT: %S.decl: type = class_decl @S [concrete = constants.%S] {} {} // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.df2: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.703) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.467)] -// CHECK:STDOUT: %Core.import_ref.a6e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.aa4 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.df2, %Core.import_ref.a6e, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.cde: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.d5a) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.837)] +// CHECK:STDOUT: %Core.import_ref.228 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.319 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.cde, %Core.import_ref.228, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc8_39.1: type = splice_block %Optional [concrete = constants.%Optional.db1] { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.725) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %.loc8_39.1: type = splice_block %Optional [concrete = constants.%Optional.679] { +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.741) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc8_39.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.db1] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.679] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1635,16 +1635,16 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc8_25: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %ptr: type = ptr_type %S.ref [concrete = constants.%ptr.037] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.725) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.741) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc8_31: %OptionalStorage.type = converted %ptr, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.db1] -// CHECK:STDOUT: %.loc8_32: %Optional.None.type.fc8 = specific_constant imports.%Core.import_ref.e9f, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.9d4] -// CHECK:STDOUT: %None.ref: %Optional.None.type.fc8 = name_ref None, %.loc8_32 [concrete = constants.%Optional.None.9d4] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.679] +// CHECK:STDOUT: %.loc8_32: %Optional.None.type.4a6 = specific_constant imports.%Core.import_ref.e9f, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.bed] +// CHECK:STDOUT: %None.ref: %Optional.None.type.4a6 = name_ref None, %.loc8_32 [concrete = constants.%Optional.None.bed] // CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %None.ref, @Optional.None(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.specific_fn] -// CHECK:STDOUT: %Optional.None.call: init %Optional.db1 = call %Optional.None.specific_fn() -// CHECK:STDOUT: %.loc8_38.1: ref %Optional.db1 = temporary_storage -// CHECK:STDOUT: %.loc8_38.2: ref %Optional.db1 = temporary %.loc8_38.1, %Optional.None.call -// CHECK:STDOUT: %.loc8_38.3: %Optional.db1 = acquire_value %.loc8_38.2 +// CHECK:STDOUT: %Optional.None.call: init %Optional.679 = call %Optional.None.specific_fn() +// CHECK:STDOUT: %.loc8_38.1: ref %Optional.679 = temporary_storage +// CHECK:STDOUT: %.loc8_38.2: ref %Optional.679 = temporary %.loc8_38.1, %Optional.None.call +// CHECK:STDOUT: %.loc8_38.3: %Optional.679 = acquire_value %.loc8_38.2 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc8_38.3) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc8_38.2, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc8_38.2) @@ -1667,7 +1667,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc8_38.3(%self.param: ref %Optional.db1) { +// CHECK:STDOUT: fn @Destroy.Op.loc8_38.3(%self.param: ref %Optional.679) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -1700,20 +1700,20 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.d38: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.191: %ptr.as.OptionalStorage.impl.Some.type.d38 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.e93: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.083: %ptr.as.OptionalStorage.impl.Some.type.e93 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.5b4: %Destroy.type = facet_value %ptr.037, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.9f2: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.5b4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.582: = impl_witness imports.%OptionalStorage.impl_witness_table.7bc, @ptr.as.OptionalStorage.impl(%S) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.043: = impl_witness imports.%OptionalStorage.impl_witness_table.538, @ptr.as.OptionalStorage.impl(%S) [concrete] // CHECK:STDOUT: %.08a0: type = maybe_unformed_type %ptr.037 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.582) [concrete] -// CHECK:STDOUT: %Optional.659: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %Optional.Some.type.004: type = fn_type @Optional.Some, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %Optional.Some.9ba: %Optional.Some.type.004 = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Some.specific_fn: = specific_function %Optional.Some.9ba, @Optional.Some(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.043) [concrete] +// CHECK:STDOUT: %Optional.0c8: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Optional.Some.type.38e: type = fn_type @Optional.Some, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Optional.Some.5b3: %Optional.Some.type.38e = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Some.specific_fn: = specific_function %Optional.Some.5b3, @Optional.Some(%OptionalStorage.facet) [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc9_40.3 [concrete] @@ -1739,20 +1739,20 @@ fn F() { // CHECK:STDOUT: %Core.Optional: %Optional.type = import_ref Core//prelude/types/optional, Optional, loaded [concrete = constants.%Optional.generic] // CHECK:STDOUT: %Core.import_ref.48e: @Optional.%Optional.Some.type (%Optional.Some.type.304) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @Optional.%Optional.Some (constants.%Optional.Some.2a0)] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.d86: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.d38) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.191)] -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.7bc = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.d86, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.66a: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.e93) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.083)] +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.538 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.66a, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc9_41.1: type = splice_block %Optional [concrete = constants.%Optional.659] { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %.loc9_41.1: type = splice_block %Optional [concrete = constants.%Optional.0c8] { +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc9_41.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.659] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.0c8] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1782,22 +1782,22 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc9_25: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref.loc9: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %ptr: type = ptr_type %S.ref.loc9 [concrete = constants.%ptr.037] -// CHECK:STDOUT: %OptionalStorage.facet.loc9_31: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %OptionalStorage.facet.loc9_31: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc9_31: %OptionalStorage.type = converted %ptr, %OptionalStorage.facet.loc9_31 [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.659] -// CHECK:STDOUT: %.loc9_32: %Optional.Some.type.004 = specific_constant imports.%Core.import_ref.48e, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Some.9ba] -// CHECK:STDOUT: %Some.ref: %Optional.Some.type.004 = name_ref Some, %.loc9_32 [concrete = constants.%Optional.Some.9ba] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.0c8] +// CHECK:STDOUT: %.loc9_32: %Optional.Some.type.38e = specific_constant imports.%Core.import_ref.48e, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Some.5b3] +// CHECK:STDOUT: %Some.ref: %Optional.Some.type.38e = name_ref Some, %.loc9_32 [concrete = constants.%Optional.Some.5b3] // CHECK:STDOUT: %s.ref: ref %S = name_ref s, %s // CHECK:STDOUT: %addr: %ptr.037 = addr_of %s.ref -// CHECK:STDOUT: %OptionalStorage.facet.loc9_40.1: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %OptionalStorage.facet.loc9_40.1: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc9_40.1: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet.loc9_40.1 [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %OptionalStorage.facet.loc9_40.2: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %OptionalStorage.facet.loc9_40.2: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc9_40.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet.loc9_40.2 [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %Optional.Some.specific_fn: = specific_function %Some.ref, @Optional.Some(constants.%OptionalStorage.facet) [concrete = constants.%Optional.Some.specific_fn] -// CHECK:STDOUT: %Optional.Some.call: init %Optional.659 = call %Optional.Some.specific_fn(%addr) -// CHECK:STDOUT: %.loc9_40.3: ref %Optional.659 = temporary_storage -// CHECK:STDOUT: %.loc9_40.4: ref %Optional.659 = temporary %.loc9_40.3, %Optional.Some.call -// CHECK:STDOUT: %.loc9_40.5: %Optional.659 = acquire_value %.loc9_40.4 +// CHECK:STDOUT: %Optional.Some.call: init %Optional.0c8 = call %Optional.Some.specific_fn(%addr) +// CHECK:STDOUT: %.loc9_40.3: ref %Optional.0c8 = temporary_storage +// CHECK:STDOUT: %.loc9_40.4: ref %Optional.0c8 = temporary %.loc9_40.3, %Optional.Some.call +// CHECK:STDOUT: %.loc9_40.5: %Optional.0c8 = acquire_value %.loc9_40.4 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc9_40.5) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc9_40.4, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc9_40.4) @@ -1822,7 +1822,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc9_40.3(%self.param: ref %Optional.659) { +// CHECK:STDOUT: fn @Destroy.Op.loc9_40.3(%self.param: ref %Optional.0c8) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -1851,10 +1851,10 @@ fn F() { // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.5b4: %Destroy.type = facet_value %ptr.037, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.9f2: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.5b4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.392: = impl_witness imports.%OptionalStorage.impl_witness_table.76e, @ptr.as.OptionalStorage.impl(%S) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.694: = impl_witness imports.%OptionalStorage.impl_witness_table.8f9, @ptr.as.OptionalStorage.impl(%S) [concrete] // CHECK:STDOUT: %.08a: type = maybe_unformed_type %ptr.037 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.392) [concrete] -// CHECK:STDOUT: %Optional.19d: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.694) [concrete] +// CHECK:STDOUT: %Optional.148: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] // CHECK:STDOUT: %get.type: type = fn_type @get [concrete] // CHECK:STDOUT: %get: %get.type = struct_value () [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] @@ -1872,28 +1872,28 @@ fn F() { // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %get.cpp_overload_set.value: %get.cpp_overload_set.type = cpp_overload_set_value @get.cpp_overload_set [concrete = constants.%get.cpp_overload_set.value] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.a6e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.76e = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.a6e, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.228 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.8f9 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.228, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %get.decl: %get.type = fn_decl @get [concrete = constants.%get] { // CHECK:STDOUT: // CHECK:STDOUT: } { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.392) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.694) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc8: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.19d] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.148] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc8_20.1: type = splice_block %Optional [concrete = constants.%Optional.19d] { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.392) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %.loc8_20.1: type = splice_block %Optional [concrete = constants.%Optional.148] { +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.694) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc8_20.2: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.19d] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.148] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -1905,10 +1905,10 @@ fn F() { // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %Cpp.ref.loc8_11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %get.ref: %get.cpp_overload_set.type = name_ref get, imports.%get.cpp_overload_set.value [concrete = constants.%get.cpp_overload_set.value] -// CHECK:STDOUT: %get.call: init %Optional.19d = call imports.%get.decl() -// CHECK:STDOUT: %.loc8_19.1: ref %Optional.19d = temporary_storage -// CHECK:STDOUT: %.loc8_19.2: ref %Optional.19d = temporary %.loc8_19.1, %get.call -// CHECK:STDOUT: %.loc8_19.3: %Optional.19d = acquire_value %.loc8_19.2 +// CHECK:STDOUT: %get.call: init %Optional.148 = call imports.%get.decl() +// CHECK:STDOUT: %.loc8_19.1: ref %Optional.148 = temporary_storage +// CHECK:STDOUT: %.loc8_19.2: ref %Optional.148 = temporary %.loc8_19.1, %get.call +// CHECK:STDOUT: %.loc8_19.3: %Optional.148 = acquire_value %.loc8_19.2 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc8_19.3) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc8_19.2, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc8_19.2) @@ -1931,7 +1931,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc8_19.3(%self.param: ref %Optional.19d) { +// CHECK:STDOUT: fn @Destroy.Op.loc8_19.3(%self.param: ref %Optional.148) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -2038,40 +2038,40 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.d38: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.191: %ptr.as.OptionalStorage.impl.Some.type.d38 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.e93: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.083: %ptr.as.OptionalStorage.impl.Some.type.e93 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.5b4: %Destroy.type = facet_value %ptr.037, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.9f2: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.5b4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.582: = impl_witness imports.%OptionalStorage.impl_witness_table.7bc, @ptr.as.OptionalStorage.impl(%S) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.043: = impl_witness imports.%OptionalStorage.impl_witness_table.538, @ptr.as.OptionalStorage.impl(%S) [concrete] // CHECK:STDOUT: %.08a0: type = maybe_unformed_type %ptr.037 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.0ce: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.582) [concrete] -// CHECK:STDOUT: %Optional.659: type = class_type @Optional, @Optional(%OptionalStorage.facet.0ce) [concrete] -// CHECK:STDOUT: %pattern_type.9f4: type = pattern_type %Optional.659 [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.0d5: %OptionalStorage.type = facet_value %ptr.037, (%OptionalStorage.impl_witness.043) [concrete] +// CHECK:STDOUT: %Optional.0c8: type = class_type @Optional, @Optional(%OptionalStorage.facet.0d5) [concrete] +// CHECK:STDOUT: %pattern_type.9f1: type = pattern_type %Optional.0c8 [concrete] // CHECK:STDOUT: %Direct.type: type = fn_type @Direct [concrete] // CHECK:STDOUT: %Direct: %Direct.type = struct_value () [concrete] // 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.1c1: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.659)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.2a2: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.0c8)> [concrete] // CHECK:STDOUT: %OptionalAs.type.3b8: type = facet_type <@OptionalAs, @OptionalAs(%T.220)> [symbolic] // CHECK:STDOUT: %U.042: %OptionalAs.type.3b8 = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%T.220, %U.042) [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.331: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.type.561: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.0ce)> [concrete] +// CHECK:STDOUT: %OptionalAs.type.862: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.0d5)> [concrete] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.type.774: type = fn_type @T.as_type.as.OptionalAs.impl.Convert, @T.as_type.as.OptionalAs.impl(%T.220) [symbolic] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.5f9: %T.as_type.as.OptionalAs.impl.Convert.type.774 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.impl_witness.72e: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.0ce) [concrete] -// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.561 = facet_value %ptr.037, (%OptionalAs.impl_witness.72e) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.d0f: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.cfa: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.8f4: %U.as_type.as.ImplicitAs.impl.Convert.type.cfa = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.21e: %ImplicitAs.type.1c1 = facet_value %ptr.037, (%ImplicitAs.impl_witness.d0f) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.c92: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.659, %ImplicitAs.facet.21e) [concrete] -// CHECK:STDOUT: %.c09: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.c92, %ImplicitAs.facet.21e [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.8f4, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.0ce, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %a.patt: %pattern_type.9f4 = value_binding_pattern a [concrete] +// CHECK:STDOUT: %OptionalAs.impl_witness.aa2: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.0d5) [concrete] +// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.862 = facet_value %ptr.037, (%OptionalAs.impl_witness.aa2) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.1b5: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.553: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.593: %U.as_type.as.ImplicitAs.impl.Convert.type.553 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.424: %ImplicitAs.type.2a2 = facet_value %ptr.037, (%ImplicitAs.impl_witness.1b5) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.243: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.0c8, %ImplicitAs.facet.424) [concrete] +// CHECK:STDOUT: %.954: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.243, %ImplicitAs.facet.424 [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.593, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.0d5, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %a.patt: %pattern_type.9f1 = value_binding_pattern a [concrete] // CHECK:STDOUT: %Indirect.cpp_overload_set.type: type = cpp_overload_set_type @Indirect.cpp_overload_set [concrete] // CHECK:STDOUT: %Indirect.cpp_overload_set.value: %Indirect.cpp_overload_set.type = cpp_overload_set_value @Indirect.cpp_overload_set [concrete] // CHECK:STDOUT: %Indirect__carbon_thunk.type: type = fn_type @Indirect__carbon_thunk [concrete] @@ -2101,23 +2101,23 @@ fn F() { // CHECK:STDOUT: %Direct.cpp_overload_set.value: %Direct.cpp_overload_set.type = cpp_overload_set_value @Direct.cpp_overload_set [concrete = constants.%Direct.cpp_overload_set.value] // CHECK:STDOUT: %Core.Optional: %Optional.type = import_ref Core//prelude/types/optional, Optional, loaded [concrete = constants.%Optional.generic] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.d86: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.d38) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.191)] -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.7bc = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.d86, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.66a: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.e93) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.083)] +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.538 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.66a, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %Direct.decl: %Direct.type = fn_decl @Direct [concrete = constants.%Direct] { // CHECK:STDOUT: // CHECK:STDOUT: } { -// CHECK:STDOUT: %OptionalStorage.facet.loc11_16.1: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %.loc11_16.1: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet.loc11_16.1 [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %Optional.loc11_16.1: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0ce) [concrete = constants.%Optional.659] +// CHECK:STDOUT: %OptionalStorage.facet.loc11_16.1: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %.loc11_16.1: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet.loc11_16.1 [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %Optional.loc11_16.1: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0d5) [concrete = constants.%Optional.0c8] // CHECK:STDOUT: -// CHECK:STDOUT: %.loc11_16.2: type = splice_block %Optional.loc11_16.2 [concrete = constants.%Optional.659] { -// CHECK:STDOUT: %OptionalStorage.facet.loc11_16.2: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %.loc11_16.3: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet.loc11_16.2 [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %Optional.loc11_16.2: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0ce) [concrete = constants.%Optional.659] +// CHECK:STDOUT: %.loc11_16.2: type = splice_block %Optional.loc11_16.2 [concrete = constants.%Optional.0c8] { +// CHECK:STDOUT: %OptionalStorage.facet.loc11_16.2: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %.loc11_16.3: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet.loc11_16.2 [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %Optional.loc11_16.2: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0d5) [concrete = constants.%Optional.0c8] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -2130,9 +2130,9 @@ fn F() { // CHECK:STDOUT: %Indirect__carbon_thunk.decl: %Indirect__carbon_thunk.type = fn_decl @Indirect__carbon_thunk [concrete = constants.%Indirect__carbon_thunk] { // CHECK:STDOUT: // CHECK:STDOUT: } { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %.loc13: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0ce) [concrete = constants.%Optional.659] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.037, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %.loc13: %OptionalStorage.type = converted constants.%ptr.037, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0d5) [concrete = constants.%Optional.0c8] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] @@ -2158,16 +2158,16 @@ fn F() { // CHECK:STDOUT: %Direct.ref: %Direct.cpp_overload_set.type = name_ref Direct, imports.%Direct.cpp_overload_set.value [concrete = constants.%Direct.cpp_overload_set.value] // CHECK:STDOUT: %s.ref: ref %S = name_ref s, %s // CHECK:STDOUT: %addr.loc11: %ptr.037 = addr_of %s.ref -// CHECK:STDOUT: %impl.elem0: %.c09 = impl_witness_access constants.%ImplicitAs.impl_witness.d0f, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.8f4] +// CHECK:STDOUT: %impl.elem0: %.954 = impl_witness_access constants.%ImplicitAs.impl_witness.1b5, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.593] // CHECK:STDOUT: %bound_method.loc11_14.1: = bound_method %addr.loc11, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.0ce, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.0d5, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_14.2: = bound_method %addr.loc11, %specific_fn -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.659 = call %bound_method.loc11_14.2(%addr.loc11) -// CHECK:STDOUT: %.loc11_14.1: init %Optional.659 = converted %addr.loc11, %U.as_type.as.ImplicitAs.impl.Convert.call -// CHECK:STDOUT: %.loc11_14.2: ref %Optional.659 = temporary_storage -// CHECK:STDOUT: %.loc11_14.3: ref %Optional.659 = temporary %.loc11_14.2, %.loc11_14.1 -// CHECK:STDOUT: %.loc11_14.4: %Optional.659 = acquire_value %.loc11_14.3 -// CHECK:STDOUT: %Direct.call: init %Optional.659 = call imports.%Direct.decl(%.loc11_14.4) +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.0c8 = call %bound_method.loc11_14.2(%addr.loc11) +// CHECK:STDOUT: %.loc11_14.1: init %Optional.0c8 = converted %addr.loc11, %U.as_type.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc11_14.2: ref %Optional.0c8 = temporary_storage +// CHECK:STDOUT: %.loc11_14.3: ref %Optional.0c8 = temporary %.loc11_14.2, %.loc11_14.1 +// CHECK:STDOUT: %.loc11_14.4: %Optional.0c8 = acquire_value %.loc11_14.3 +// CHECK:STDOUT: %Direct.call: init %Optional.0c8 = call imports.%Direct.decl(%.loc11_14.4) // CHECK:STDOUT: %Cpp.ref.loc13_41: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %Indirect.ref: %Indirect.cpp_overload_set.type = name_ref Indirect, imports.%Indirect.cpp_overload_set.value [concrete = constants.%Indirect.cpp_overload_set.value] // CHECK:STDOUT: %.loc13_55.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] @@ -2180,23 +2180,23 @@ fn F() { // CHECK:STDOUT: %.loc13_57.3: %S = acquire_value %.loc13_57.2 [concrete = constants.%S.val] // CHECK:STDOUT: %.loc13_57.4: ref %S = value_as_ref %.loc13_57.3 // CHECK:STDOUT: %addr.loc13: %ptr.037 = addr_of %.loc13_57.4 -// CHECK:STDOUT: %Indirect__carbon_thunk.call: init %Optional.659 = call imports.%Indirect__carbon_thunk.decl(%addr.loc13) -// CHECK:STDOUT: %.loc13_65.1: ref %Optional.659 = temporary_storage -// CHECK:STDOUT: %.loc13_65.2: ref %Optional.659 = temporary %.loc13_65.1, %Indirect__carbon_thunk.call -// CHECK:STDOUT: %.loc13_65.3: %Optional.659 = acquire_value %.loc13_65.2 -// CHECK:STDOUT: %.loc13_37.1: type = splice_block %Optional [concrete = constants.%Optional.659] { +// CHECK:STDOUT: %Indirect__carbon_thunk.call: init %Optional.0c8 = call imports.%Indirect__carbon_thunk.decl(%addr.loc13) +// CHECK:STDOUT: %.loc13_65.1: ref %Optional.0c8 = temporary_storage +// CHECK:STDOUT: %.loc13_65.2: ref %Optional.0c8 = temporary %.loc13_65.1, %Indirect__carbon_thunk.call +// CHECK:STDOUT: %.loc13_65.3: %Optional.0c8 = acquire_value %.loc13_65.2 +// CHECK:STDOUT: %.loc13_37.1: type = splice_block %Optional [concrete = constants.%Optional.0c8] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Optional.ref: %Optional.type = name_ref Optional, imports.%Core.Optional [concrete = constants.%Optional.generic] // CHECK:STDOUT: %Cpp.ref.loc13_31: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %S.ref.loc13_34: type = name_ref S, imports.%S.decl [concrete = constants.%S] // CHECK:STDOUT: %ptr: type = ptr_type %S.ref.loc13_34 [concrete = constants.%ptr.037] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.582) [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %.loc13_37.2: %OptionalStorage.type = converted %ptr, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0ce] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0ce) [concrete = constants.%Optional.659] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.043) [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %.loc13_37.2: %OptionalStorage.type = converted %ptr, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.0d5] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.0d5) [concrete = constants.%Optional.0c8] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %Optional.659 = wrapper_binding a, %.loc13_65.3 +// CHECK:STDOUT: %a: %Optional.0c8 = wrapper_binding a, %.loc13_65.3 // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %a.patt: %pattern_type.9f4 = value_binding_pattern a [concrete = constants.%a.patt] +// CHECK:STDOUT: %a.patt: %pattern_type.9f1 = value_binding_pattern a [concrete = constants.%a.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %Destroy.Op.bound.loc13: = bound_method %.loc13_65.2, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call.loc13: init %empty_tuple.type = call %Destroy.Op.bound.loc13(%.loc13_65.2) @@ -2223,7 +2223,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc13_65.3(%self.param: ref %Optional.659) { +// CHECK:STDOUT: fn @Destroy.Op.loc13_65.3(%self.param: ref %Optional.0c8) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/function/import/void_pointer.carbon b/toolchain/check/testdata/interop/cpp/function/import/void_pointer.carbon index 6904175b3620..bb8a57c03b9e 100644 --- a/toolchain/check/testdata/interop/cpp/function/import/void_pointer.carbon +++ b/toolchain/check/testdata/interop/cpp/function/import/void_pointer.carbon @@ -213,36 +213,36 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.d38: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.191: %ptr.as.OptionalStorage.impl.Some.type.d38 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.type.e93: type = fn_type @ptr.as.OptionalStorage.impl.Some, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.Some.083: %ptr.as.OptionalStorage.impl.Some.type.e93 = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.49e: %Destroy.type = facet_value %ptr.00a, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.399: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.49e) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.cc5: = impl_witness imports.%OptionalStorage.impl_witness_table.7bc, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.1b2: = impl_witness imports.%OptionalStorage.impl_witness_table.538, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete] // CHECK:STDOUT: %.a7d: type = maybe_unformed_type %ptr.00a [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.f19: %OptionalStorage.type = facet_value %ptr.00a, (%OptionalStorage.impl_witness.cc5) [concrete] -// CHECK:STDOUT: %Optional.c11: type = class_type @Optional, @Optional(%OptionalStorage.facet.f19) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.cdc: %OptionalStorage.type = facet_value %ptr.00a, (%OptionalStorage.impl_witness.1b2) [concrete] +// CHECK:STDOUT: %Optional.d03: type = class_type @Optional, @Optional(%OptionalStorage.facet.cdc) [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.37e: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.c11)> [concrete] +// CHECK:STDOUT: %ImplicitAs.type.d06: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.d03)> [concrete] // CHECK:STDOUT: %OptionalAs.type.3b8: type = facet_type <@OptionalAs, @OptionalAs(%T.220)> [symbolic] // CHECK:STDOUT: %U.042: %OptionalAs.type.3b8 = symbolic_binding U, 1 [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%T.220, %U.042) [symbolic] // CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.331: %U.as_type.as.ImplicitAs.impl.Convert.type.ad5 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.type.cfc: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.f19)> [concrete] +// CHECK:STDOUT: %OptionalAs.type.c2c: type = facet_type <@OptionalAs, @OptionalAs(%OptionalStorage.facet.cdc)> [concrete] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.type.774: type = fn_type @T.as_type.as.OptionalAs.impl.Convert, @T.as_type.as.OptionalAs.impl(%T.220) [symbolic] // CHECK:STDOUT: %T.as_type.as.OptionalAs.impl.Convert.5f9: %T.as_type.as.OptionalAs.impl.Convert.type.774 = struct_value () [symbolic] -// CHECK:STDOUT: %OptionalAs.impl_witness.d9b: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.f19) [concrete] -// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.cfc = facet_value %ptr.00a, (%OptionalAs.impl_witness.d9b) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.5aa: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.f19, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.3de: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.f19, %OptionalAs.facet) [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.504: %U.as_type.as.ImplicitAs.impl.Convert.type.3de = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.d85: %ImplicitAs.type.37e = facet_value %ptr.00a, (%ImplicitAs.impl_witness.5aa) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.bdd: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.c11, %ImplicitAs.facet.d85) [concrete] -// CHECK:STDOUT: %.c7c: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.bdd, %ImplicitAs.facet.d85 [concrete] -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.504, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.f19, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %OptionalAs.impl_witness.0a5: = impl_witness imports.%OptionalAs.impl_witness_table.efa, @T.as_type.as.OptionalAs.impl(%OptionalStorage.facet.cdc) [concrete] +// CHECK:STDOUT: %OptionalAs.facet: %OptionalAs.type.c2c = facet_value %ptr.00a, (%OptionalAs.impl_witness.0a5) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.d25: = impl_witness imports.%ImplicitAs.impl_witness_table.cf7, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.cdc, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.type.5e5: type = fn_type @U.as_type.as.ImplicitAs.impl.Convert.2, @U.as_type.as.ImplicitAs.impl.167(%OptionalStorage.facet.cdc, %OptionalAs.facet) [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.08d: %U.as_type.as.ImplicitAs.impl.Convert.type.5e5 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.339: %ImplicitAs.type.d06 = facet_value %ptr.00a, (%ImplicitAs.impl_witness.d25) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.411: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.d03, %ImplicitAs.facet.339) [concrete] +// CHECK:STDOUT: %.19b: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.411, %ImplicitAs.facet.339 [concrete] +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %U.as_type.as.ImplicitAs.impl.Convert.08d, @U.as_type.as.ImplicitAs.impl.Convert.2(%OptionalStorage.facet.cdc, %OptionalAs.facet) [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc10_11.3 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.4: %Destroy.Op.type.1d8f74.4 = struct_value () [concrete] // CHECK:STDOUT: } @@ -255,20 +255,20 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.d86: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.d38) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.191)] -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.7bc = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.d86, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.66a: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some.type (%ptr.as.OptionalStorage.impl.Some.type.e93) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.Some (constants.%ptr.as.OptionalStorage.impl.Some.083)] +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.538 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.66a, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc10_16.1: type = splice_block %Optional [concrete = constants.%Optional.c11] { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.00a, (constants.%OptionalStorage.impl_witness.cc5) [concrete = constants.%OptionalStorage.facet.f19] -// CHECK:STDOUT: %.loc10_16.2: %OptionalStorage.type = converted constants.%ptr.00a, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.f19] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.f19) [concrete = constants.%Optional.c11] +// CHECK:STDOUT: %.loc10_16.1: type = splice_block %Optional [concrete = constants.%Optional.d03] { +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.00a, (constants.%OptionalStorage.impl_witness.1b2) [concrete = constants.%OptionalStorage.facet.cdc] +// CHECK:STDOUT: %.loc10_16.2: %OptionalStorage.type = converted constants.%ptr.00a, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.cdc] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.cdc) [concrete = constants.%Optional.d03] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -283,15 +283,15 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc10: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %input.ref: %ptr.00a = name_ref input, %input -// CHECK:STDOUT: %impl.elem0: %.c7c = impl_witness_access constants.%ImplicitAs.impl_witness.5aa, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.504] +// CHECK:STDOUT: %impl.elem0: %.19b = impl_witness_access constants.%ImplicitAs.impl_witness.d25, element0 [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.08d] // CHECK:STDOUT: %bound_method.loc10_11.1: = bound_method %input.ref, %impl.elem0 -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.f19, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @U.as_type.as.ImplicitAs.impl.Convert.2(constants.%OptionalStorage.facet.cdc, constants.%OptionalAs.facet) [concrete = constants.%U.as_type.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_11.2: = bound_method %input.ref, %specific_fn -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.c11 = call %bound_method.loc10_11.2(%input.ref) -// CHECK:STDOUT: %.loc10_11.1: init %Optional.c11 = converted %input.ref, %U.as_type.as.ImplicitAs.impl.Convert.call -// CHECK:STDOUT: %.loc10_11.2: ref %Optional.c11 = temporary_storage -// CHECK:STDOUT: %.loc10_11.3: ref %Optional.c11 = temporary %.loc10_11.2, %.loc10_11.1 -// CHECK:STDOUT: %.loc10_11.4: %Optional.c11 = acquire_value %.loc10_11.3 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call: init %Optional.d03 = call %bound_method.loc10_11.2(%input.ref) +// CHECK:STDOUT: %.loc10_11.1: init %Optional.d03 = converted %input.ref, %U.as_type.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc10_11.2: ref %Optional.d03 = temporary_storage +// CHECK:STDOUT: %.loc10_11.3: ref %Optional.d03 = temporary %.loc10_11.2, %.loc10_11.1 +// CHECK:STDOUT: %.loc10_11.4: %Optional.d03 = acquire_value %.loc10_11.3 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc10_11.4) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc10_11.3, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc10_11.3) @@ -314,7 +314,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc10_11.3(%self.param: ref %Optional.c11) { +// CHECK:STDOUT: fn @Destroy.Op.loc10_11.3(%self.param: ref %Optional.d03) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -341,20 +341,20 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.703: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.467: %ptr.as.OptionalStorage.impl.None.type.703 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.d5a: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.837: %ptr.as.OptionalStorage.impl.None.type.d5a = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.1: type = fn_type @Destroy.Op.1 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.1: %Destroy.Op.type.1d8f74.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.49e: %Destroy.type = facet_value %ptr.00a, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.399: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.49e) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.ae9: = impl_witness imports.%OptionalStorage.impl_witness_table.aa4, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.1b4: = impl_witness imports.%OptionalStorage.impl_witness_table.319, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete] // CHECK:STDOUT: %.a7d: type = maybe_unformed_type %ptr.00a [concrete] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.00a, (%OptionalStorage.impl_witness.ae9) [concrete] -// CHECK:STDOUT: %Optional.d90: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %Optional.None.type.c50: type = fn_type @Optional.None, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %Optional.None.5c6: %Optional.None.type.c50 = struct_value () [concrete] -// CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %Optional.None.5c6, @Optional.None(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.00a, (%OptionalStorage.impl_witness.1b4) [concrete] +// CHECK:STDOUT: %Optional.743: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Optional.None.type.d1e: type = fn_type @Optional.None, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %Optional.None.92c: %Optional.None.type.d1e = struct_value () [concrete] +// CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %Optional.None.92c, @Optional.None(%OptionalStorage.facet) [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.4: type = fn_type @Destroy.Op.loc10_41.3 [concrete] @@ -385,20 +385,20 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.VoidBase: type = import_ref Core//prelude/types/cpp/void, VoidBase, loaded [concrete = constants.%Cpp.void] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.df2: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.703) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.467)] -// CHECK:STDOUT: %Core.import_ref.a6e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.aa4 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.df2, %Core.import_ref.a6e, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.cde: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.d5a) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.837)] +// CHECK:STDOUT: %Core.import_ref.228 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.319 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.cde, %Core.import_ref.228, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc10_42.1: type = splice_block %Optional [concrete = constants.%Optional.d90] { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.00a, (constants.%OptionalStorage.impl_witness.ae9) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %.loc10_42.1: type = splice_block %Optional [concrete = constants.%Optional.743] { +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.00a, (constants.%OptionalStorage.impl_witness.1b4) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc10_42.2: %OptionalStorage.type = converted constants.%ptr.00a, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.d90] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.743] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } @@ -414,16 +414,16 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc10_25: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void] // CHECK:STDOUT: %ptr: type = ptr_type %void.ref [concrete = constants.%ptr.00a] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.ae9) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.1b4) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc10_34: %OptionalStorage.type = converted %ptr, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.d90] -// CHECK:STDOUT: %.loc10_35: %Optional.None.type.c50 = specific_constant imports.%Core.import_ref.e9f, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.5c6] -// CHECK:STDOUT: %None.ref: %Optional.None.type.c50 = name_ref None, %.loc10_35 [concrete = constants.%Optional.None.5c6] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.743] +// CHECK:STDOUT: %.loc10_35: %Optional.None.type.d1e = specific_constant imports.%Core.import_ref.e9f, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.92c] +// CHECK:STDOUT: %None.ref: %Optional.None.type.d1e = name_ref None, %.loc10_35 [concrete = constants.%Optional.None.92c] // CHECK:STDOUT: %Optional.None.specific_fn: = specific_function %None.ref, @Optional.None(constants.%OptionalStorage.facet) [concrete = constants.%Optional.None.specific_fn] -// CHECK:STDOUT: %Optional.None.call: init %Optional.d90 = call %Optional.None.specific_fn() -// CHECK:STDOUT: %.loc10_41.1: ref %Optional.d90 = temporary_storage -// CHECK:STDOUT: %.loc10_41.2: ref %Optional.d90 = temporary %.loc10_41.1, %Optional.None.call -// CHECK:STDOUT: %.loc10_41.3: %Optional.d90 = acquire_value %.loc10_41.2 +// CHECK:STDOUT: %Optional.None.call: init %Optional.743 = call %Optional.None.specific_fn() +// CHECK:STDOUT: %.loc10_41.1: ref %Optional.743 = temporary_storage +// CHECK:STDOUT: %.loc10_41.2: ref %Optional.743 = temporary %.loc10_41.1, %Optional.None.call +// CHECK:STDOUT: %.loc10_41.3: %Optional.743 = acquire_value %.loc10_41.2 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc10_41.3) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc10_41.2, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc10_41.2) @@ -446,7 +446,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc10_41.3(%self.param: ref %Optional.d90) { +// CHECK:STDOUT: fn @Destroy.Op.loc10_41.3(%self.param: ref %Optional.743) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -473,12 +473,12 @@ fn F() { // CHECK:STDOUT: %custom_witness.df9cc1.1: = custom_witness (%Destroy.Op.1a2547.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.49e: %Destroy.type = facet_value %ptr.00a, (%custom_witness.df9cc1.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.399: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.49e) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.570: = impl_witness imports.%OptionalStorage.impl_witness_table.76e, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.cfb: = impl_witness imports.%OptionalStorage.impl_witness_table.8f9, @ptr.as.OptionalStorage.impl(%Cpp.void) [concrete] // CHECK:STDOUT: %.a7d: type = maybe_unformed_type %ptr.00a [concrete] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.00a, (%OptionalStorage.impl_witness.570) [concrete] -// CHECK:STDOUT: %Optional.752: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] -// CHECK:STDOUT: %pattern_type.d62: type = pattern_type %Optional.752 [concrete] -// CHECK:STDOUT: %output.patt: %pattern_type.d62 = value_binding_pattern output [concrete] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr.00a, (%OptionalStorage.impl_witness.cfb) [concrete] +// CHECK:STDOUT: %Optional.f99: type = class_type @Optional, @Optional(%OptionalStorage.facet) [concrete] +// CHECK:STDOUT: %pattern_type.1c3: type = pattern_type %Optional.f99 [concrete] +// CHECK:STDOUT: %output.patt: %pattern_type.1c3 = value_binding_pattern output [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.type: type = cpp_overload_set_type @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] @@ -509,19 +509,19 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.VoidBase: type = import_ref Core//prelude/types/cpp/void, VoidBase, loaded [concrete = constants.%Cpp.void] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.26e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.a6e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.76e = impl_witness_table (%Core.import_ref.509, %Core.import_ref.26e, %Core.import_ref.a6e, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.228 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.8f9 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.207, %Core.import_ref.228, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.00a, (constants.%OptionalStorage.impl_witness.570) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.00a, (constants.%OptionalStorage.impl_witness.cfb) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc10: %OptionalStorage.type = converted constants.%ptr.00a, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.752] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.f99] // CHECK:STDOUT: // CHECK:STDOUT: } // CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/destroy, Destroy, loaded [concrete = constants.%Destroy.type] @@ -531,23 +531,23 @@ fn F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Cpp.ref.loc10_49: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %foo.ref: %foo.cpp_overload_set.type = name_ref foo, imports.%foo.cpp_overload_set.value [concrete = constants.%foo.cpp_overload_set.value] -// CHECK:STDOUT: %foo.call: init %Optional.752 = call imports.%foo.decl() -// CHECK:STDOUT: %.loc10_57.1: ref %Optional.752 = temporary_storage -// CHECK:STDOUT: %.loc10_57.2: ref %Optional.752 = temporary %.loc10_57.1, %foo.call -// CHECK:STDOUT: %.loc10_57.3: %Optional.752 = acquire_value %.loc10_57.2 -// CHECK:STDOUT: %.loc10_45.1: type = splice_block %Optional [concrete = constants.%Optional.752] { +// CHECK:STDOUT: %foo.call: init %Optional.f99 = call imports.%foo.decl() +// CHECK:STDOUT: %.loc10_57.1: ref %Optional.f99 = temporary_storage +// CHECK:STDOUT: %.loc10_57.2: ref %Optional.f99 = temporary %.loc10_57.1, %foo.call +// CHECK:STDOUT: %.loc10_57.3: %Optional.f99 = acquire_value %.loc10_57.2 +// CHECK:STDOUT: %.loc10_45.1: type = splice_block %Optional [concrete = constants.%Optional.f99] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %Optional.ref: %Optional.type = name_ref Optional, imports.%Core.Optional [concrete = constants.%Optional.generic] // CHECK:STDOUT: %Cpp.ref.loc10_36: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: %void.ref: type = name_ref void, constants.%Cpp.void [concrete = constants.%Cpp.void] // CHECK:STDOUT: %ptr: type = ptr_type %void.ref [concrete = constants.%ptr.00a] -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.570) [concrete = constants.%OptionalStorage.facet] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value %ptr, (constants.%OptionalStorage.impl_witness.cfb) [concrete = constants.%OptionalStorage.facet] // CHECK:STDOUT: %.loc10_45.2: %OptionalStorage.type = converted %ptr, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.752] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet) [concrete = constants.%Optional.f99] // CHECK:STDOUT: } -// CHECK:STDOUT: %output: %Optional.752 = wrapper_binding output, %.loc10_57.3 +// CHECK:STDOUT: %output: %Optional.f99 = wrapper_binding output, %.loc10_57.3 // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %output.patt: %pattern_type.d62 = value_binding_pattern output [concrete = constants.%output.patt] +// CHECK:STDOUT: %output.patt: %pattern_type.1c3 = value_binding_pattern output [concrete = constants.%output.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc10_57.2, constants.%Destroy.Op.1a2547.4 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc10_57.2) @@ -570,7 +570,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc10_57.3(%self.param: ref %Optional.752) { +// CHECK:STDOUT: fn @Destroy.Op.loc10_57.3(%self.param: ref %Optional.f99) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/macros/macros.carbon b/toolchain/check/testdata/interop/cpp/macros/macros.carbon index 5718778adf79..efb50692c06b 100644 --- a/toolchain/check/testdata/interop/cpp/macros/macros.carbon +++ b/toolchain/check/testdata/interop/cpp/macros/macros.carbon @@ -1825,30 +1825,30 @@ fn F() { // CHECK:STDOUT: %Destroy.lookup_impl_witness.781: = lookup_impl_witness %ptr.e8f, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.facet.e46: %Destroy.type = facet_value %ptr.e8f, (%Destroy.lookup_impl_witness.781) [symbolic] // CHECK:STDOUT: %MaybeUnformed.ddb: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.e46) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.703: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.467: %ptr.as.OptionalStorage.impl.None.type.703 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.type.d5a: type = fn_type @ptr.as.OptionalStorage.impl.None, @ptr.as.OptionalStorage.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %ptr.as.OptionalStorage.impl.None.837: %ptr.as.OptionalStorage.impl.None.type.d5a = struct_value () [symbolic] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.2 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.2: = custom_witness (%Destroy.Op.1a2547.2), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.4c4: %Destroy.type = facet_value %ptr.d08, (%custom_witness.df9cc1.2) [concrete] // CHECK:STDOUT: %MaybeUnformed.b84: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.4c4) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.734: = impl_witness imports.%OptionalStorage.impl_witness_table.aa4, @ptr.as.OptionalStorage.impl(%i32) [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.f31: = impl_witness imports.%OptionalStorage.impl_witness_table.319, @ptr.as.OptionalStorage.impl(%i32) [concrete] // CHECK:STDOUT: %.0f8: type = maybe_unformed_type %ptr.d08 [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.194: %OptionalStorage.type = facet_value %ptr.d08, (%OptionalStorage.impl_witness.734) [concrete] -// CHECK:STDOUT: %Optional.a18: type = class_type @Optional, @Optional(%OptionalStorage.facet.194) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.28e: %OptionalStorage.type = facet_value %ptr.d08, (%OptionalStorage.impl_witness.f31) [concrete] +// CHECK:STDOUT: %Optional.ae0: type = class_type @Optional, @Optional(%OptionalStorage.facet.28e) [concrete] // CHECK:STDOUT: %foo.type: type = fn_type @foo [concrete] // CHECK:STDOUT: %foo: %foo.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.afa: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.a18)> [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.a15: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%T.67d) [symbolic] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.240: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.a15 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.278: = impl_witness imports.%ImplicitAs.impl_witness_table.840, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.c54: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.41f: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.c54 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.afa = facet_value %Cpp.nullptr_t, (%ImplicitAs.impl_witness.278) [concrete] -// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.636: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.a18, %ImplicitAs.facet) [concrete] -// CHECK:STDOUT: %.992: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.636, %ImplicitAs.facet [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.bound: = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.41f [concrete] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.41f, @Cpp.nullptr_t.as.ImplicitAs.impl.Convert(%i32) [concrete] +// CHECK:STDOUT: %ImplicitAs.type.2bb: type = facet_type <@ImplicitAs, @ImplicitAs(%Optional.ae0)> [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.4df: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%T.67d) [symbolic] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.cd5: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.4df = struct_value () [symbolic] +// CHECK:STDOUT: %ImplicitAs.impl_witness.d35: = impl_witness imports.%ImplicitAs.impl_witness_table.2f2, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.072: type = fn_type @Cpp.nullptr_t.as.ImplicitAs.impl.Convert, @Cpp.nullptr_t.as.ImplicitAs.impl(%i32) [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.491: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.072 = struct_value () [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.2bb = facet_value %Cpp.nullptr_t, (%ImplicitAs.impl_witness.d35) [concrete] +// CHECK:STDOUT: %ImplicitAs.WithSelf.Convert.type.2b3: type = fn_type @ImplicitAs.WithSelf.Convert, @ImplicitAs.WithSelf(%Optional.ae0, %ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %.047: type = fn_type_with_self_type %ImplicitAs.WithSelf.Convert.type.2b3, %ImplicitAs.facet [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.bound: = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.491 [concrete] +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn: = specific_function %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.491, @Cpp.nullptr_t.as.ImplicitAs.impl.Convert(%i32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %uninit, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.5: type = fn_type @Destroy.Op.loc11_14.3 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.5: %Destroy.Op.type.1d8f74.5 = struct_value () [concrete] @@ -1862,26 +1862,26 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: %foo.cpp_overload_set.value: %foo.cpp_overload_set.type = cpp_overload_set_value @foo.cpp_overload_set [concrete = constants.%foo.cpp_overload_set.value] // CHECK:STDOUT: %Core.import_ref.509: type = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%MaybeUnformed (constants.%MaybeUnformed.ddb)] -// CHECK:STDOUT: %Core.import_ref.df2: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.703) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.467)] -// CHECK:STDOUT: %Core.import_ref.a6e = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.274 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.358 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.db3 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.aa4 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.df2, %Core.import_ref.a6e, %Core.import_ref.274, %Core.import_ref.358, %Core.import_ref.db3), @ptr.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.cde8: @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None.type (%ptr.as.OptionalStorage.impl.None.type.d5a) = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, loaded [symbolic = @ptr.as.OptionalStorage.impl.%ptr.as.OptionalStorage.impl.None (constants.%ptr.as.OptionalStorage.impl.None.837)] +// CHECK:STDOUT: %Core.import_ref.228 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.ee7 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.e32 = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %Core.import_ref.3cf = import_ref Core//prelude/types/optional, loc{{\d+_\d+}}, unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.319 = impl_witness_table (%Core.import_ref.509, %Core.import_ref.cde8, %Core.import_ref.228, %Core.import_ref.ee7, %Core.import_ref.e32, %Core.import_ref.3cf), @ptr.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %foo.decl: %foo.type = fn_decl @foo [concrete = constants.%foo] { // CHECK:STDOUT: // CHECK:STDOUT: } { // CHECK:STDOUT: -// CHECK:STDOUT: %.loc11_24.1: type = splice_block %Optional [concrete = constants.%Optional.a18] { +// CHECK:STDOUT: %.loc11_24.1: type = splice_block %Optional [concrete = constants.%Optional.ae0] { // CHECK:STDOUT: -// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.d08, (constants.%OptionalStorage.impl_witness.734) [concrete = constants.%OptionalStorage.facet.194] -// CHECK:STDOUT: %.loc11_24.2: %OptionalStorage.type = converted constants.%ptr.d08, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.194] -// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.194) [concrete = constants.%Optional.a18] +// CHECK:STDOUT: %OptionalStorage.facet: %OptionalStorage.type = facet_value constants.%ptr.d08, (constants.%OptionalStorage.impl_witness.f31) [concrete = constants.%OptionalStorage.facet.28e] +// CHECK:STDOUT: %.loc11_24.2: %OptionalStorage.type = converted constants.%ptr.d08, %OptionalStorage.facet [concrete = constants.%OptionalStorage.facet.28e] +// CHECK:STDOUT: %Optional: type = class_type @Optional, @Optional(constants.%OptionalStorage.facet.28e) [concrete = constants.%Optional.ae0] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import_ref.0ca: @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type (%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.a15) = import_ref Core//prelude/types/cpp/nullptr, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert (constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.240)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.840 = impl_witness_table (%Core.import_ref.0ca), @Cpp.nullptr_t.as.ImplicitAs.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.c4f: @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type (%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.type.4df) = import_ref Core//prelude/types/cpp/nullptr, loc{{\d+_\d+}}, loaded [symbolic = @Cpp.nullptr_t.as.ImplicitAs.impl.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert (constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.cd5)] +// CHECK:STDOUT: %ImplicitAs.impl_witness_table.2f2 = impl_witness_table (%Core.import_ref.c4f), @Cpp.nullptr_t.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -1891,15 +1891,15 @@ fn F() { // CHECK:STDOUT: %Cpp.ref.loc11_11: = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp] // CHECK:STDOUT: // CHECK:STDOUT: %MyNullPtr.ref: %Cpp.nullptr_t = name_ref MyNullPtr, %uninit [concrete = constants.%uninit] -// CHECK:STDOUT: %impl.elem0: %.992 = impl_witness_access constants.%ImplicitAs.impl_witness.278, element0 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.41f] +// CHECK:STDOUT: %impl.elem0: %.047 = impl_witness_access constants.%ImplicitAs.impl_witness.d35, element0 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.491] // CHECK:STDOUT: %bound_method.loc11_14.1: = bound_method %MyNullPtr.ref, %impl.elem0 [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.bound] // CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Cpp.nullptr_t.as.ImplicitAs.impl.Convert(constants.%i32) [concrete = constants.%Cpp.nullptr_t.as.ImplicitAs.impl.Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc11_14.2: = bound_method %MyNullPtr.ref, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call: init %Optional.a18 = call %bound_method.loc11_14.2(%MyNullPtr.ref) -// CHECK:STDOUT: %.loc11_14.1: init %Optional.a18 = converted %MyNullPtr.ref, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call -// CHECK:STDOUT: %.loc11_14.2: ref %Optional.a18 = temporary_storage -// CHECK:STDOUT: %.loc11_14.3: ref %Optional.a18 = temporary %.loc11_14.2, %.loc11_14.1 -// CHECK:STDOUT: %.loc11_14.4: %Optional.a18 = acquire_value %.loc11_14.3 +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call: init %Optional.ae0 = call %bound_method.loc11_14.2(%MyNullPtr.ref) +// CHECK:STDOUT: %.loc11_14.1: init %Optional.ae0 = converted %MyNullPtr.ref, %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call +// CHECK:STDOUT: %.loc11_14.2: ref %Optional.ae0 = temporary_storage +// CHECK:STDOUT: %.loc11_14.3: ref %Optional.ae0 = temporary %.loc11_14.2, %.loc11_14.1 +// CHECK:STDOUT: %.loc11_14.4: %Optional.ae0 = acquire_value %.loc11_14.3 // CHECK:STDOUT: %foo.call: init %empty_tuple.type = call imports.%foo.decl(%.loc11_14.4) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc11_14.3, constants.%Destroy.Op.1a2547.5 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc11_14.3) @@ -1922,7 +1922,7 @@ fn F() { // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc11_14.3(%self.param: ref %Optional.a18) { +// CHECK:STDOUT: fn @Destroy.Op.loc11_14.3(%self.param: ref %Optional.ae0) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interop/cpp/operators/arithmetic_operators.carbon b/toolchain/check/testdata/interop/cpp/operators/arithmetic_operators.carbon index 8baa76eef20d..faf32c6f2481 100644 --- a/toolchain/check/testdata/interop/cpp/operators/arithmetic_operators.carbon +++ b/toolchain/check/testdata/interop/cpp/operators/arithmetic_operators.carbon @@ -326,37 +326,40 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.b61: type = facet_access_type %U.f40 [symbolic] // CHECK:STDOUT: %AddWith.type.9da: type = facet_type <@AddWith.1, @AddWith.1(%U.as_type.b61)> [symbolic] // CHECK:STDOUT: %facet_type.b1e: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%U.as_type.b61)> [symbolic] -// CHECK:STDOUT: %.Self.d6f: %facet_type.b1e = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.1ea: %facet_type.b1e = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %AddWith.assoc_type.bc8: type = assoc_entity_type @AddWith.1, @AddWith.1(%U.as_type.b61) [symbolic] // CHECK:STDOUT: %assoc0.21f: %AddWith.assoc_type.bc8 = assoc_entity element0, imports.%Core.import_ref.91f8 [symbolic] // CHECK:STDOUT: %assoc1.13e: %AddWith.assoc_type.bc8 = assoc_entity element1, imports.%Core.import_ref.3cf [symbolic] // CHECK:STDOUT: %require_complete.c7d: = require_complete_type %facet_type.b1e [symbolic] -// CHECK:STDOUT: %.Self.as_type.38e: type = facet_access_type %.Self.d6f [symbolic] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.29f: = lookup_impl_witness %.Self.d6f, @AddWith.1, @AddWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %impl.elem0.8bb: type = impl_witness_access %AddWith.lookup_impl_witness.29f, element0 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.015: type = facet_access_type %.Self.frozen.1ea [symbolic] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.2f6: = lookup_impl_witness %.Self.frozen.1ea, @AddWith.1, @AddWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.1c6: type = impl_witness_access %AddWith.lookup_impl_witness.2f6, element0 [symbolic] // CHECK:STDOUT: %Result.as_type: type = facet_access_type %Result [symbolic] -// CHECK:STDOUT: %facet_type.096: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%U.as_type.b61) where %impl.elem0.8bb = %Result.as_type> [symbolic] -// CHECK:STDOUT: %pattern_type.3fb: type = pattern_type %facet_type.096 [symbolic] -// CHECK:STDOUT: %T.patt.c80: %pattern_type.3fb = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %T.200: %facet_type.096 = symbolic_binding T, 2 [symbolic] +// CHECK:STDOUT: %.Self.014: %facet_type.b1e = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.0d5: = lookup_impl_witness %.Self.014, @AddWith.1, @AddWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.ea5: type = impl_witness_access %AddWith.lookup_impl_witness.0d5, element0 [symbolic] +// CHECK:STDOUT: %facet_type.c2e: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%U.as_type.b61) where %impl.elem0.ea5 = %Result.as_type> [symbolic] +// CHECK:STDOUT: %pattern_type.0a9: type = pattern_type %facet_type.c2e [symbolic] +// CHECK:STDOUT: %T.patt.69e: %pattern_type.0a9 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %T.ceb: %facet_type.c2e = symbolic_binding T, 2 [symbolic] // CHECK:STDOUT: %pattern_type.f4e485.2: type = pattern_type %Result.as_type [symbolic] // CHECK:STDOUT: %result.param_patt.6ba: %pattern_type.f4e485.2 = value_param_pattern [symbolic] // CHECK:STDOUT: %result.patt.748373.1: %pattern_type.f4e485.2 = at_binding_pattern result, %result.param_patt.6ba [symbolic] -// CHECK:STDOUT: %T.as_type.606: type = facet_access_type %T.200 [symbolic] -// CHECK:STDOUT: %pattern_type.82c: type = pattern_type %T.as_type.606 [symbolic] -// CHECK:STDOUT: %x.param_patt.4c4: %pattern_type.82c = value_param_pattern [symbolic] -// CHECK:STDOUT: %x.patt.eac: %pattern_type.82c = at_binding_pattern x, %x.param_patt.4c4 [symbolic] +// CHECK:STDOUT: %T.as_type.6fc: type = facet_access_type %T.ceb [symbolic] +// CHECK:STDOUT: %pattern_type.786: type = pattern_type %T.as_type.6fc [symbolic] +// CHECK:STDOUT: %x.param_patt.0c5: %pattern_type.786 = value_param_pattern [symbolic] +// CHECK:STDOUT: %x.patt.4db: %pattern_type.786 = at_binding_pattern x, %x.param_patt.0c5 [symbolic] // CHECK:STDOUT: %pattern_type.753: type = pattern_type %U.as_type.b61 [symbolic] // CHECK:STDOUT: %y.param_patt.740: %pattern_type.753 = value_param_pattern [symbolic] // CHECK:STDOUT: %y.patt.4ae: %pattern_type.753 = at_binding_pattern y, %y.param_patt.740 [symbolic] // CHECK:STDOUT: %require_complete.15e: = require_complete_type %AddWith.type.9da [symbolic] // CHECK:STDOUT: %assoc1.57d: %AddWith.assoc_type.588 = assoc_entity element1, imports.%Core.import_ref.9768 [symbolic] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.8b3: = lookup_impl_witness %T.200, @AddWith.1, @AddWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %AddWith.facet.fc9: %AddWith.type.9da = facet_value %T.as_type.606, (%AddWith.lookup_impl_witness.8b3) [symbolic] -// CHECK:STDOUT: %AddWith.WithSelf.Op.type.eb7: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%U.as_type.b61, %AddWith.facet.fc9) [symbolic] -// CHECK:STDOUT: %.012e: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.eb7, %AddWith.facet.fc9 [symbolic] -// CHECK:STDOUT: %impl.elem1.0c1: %.012e = impl_witness_access %AddWith.lookup_impl_witness.8b3, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.95a: = specific_impl_function %impl.elem1.0c1, @AddWith.WithSelf.Op(%U.as_type.b61, %AddWith.facet.fc9) [symbolic] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.2b1: = lookup_impl_witness %T.ceb, @AddWith.1, @AddWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %AddWith.facet.fea: %AddWith.type.9da = facet_value %T.as_type.6fc, (%AddWith.lookup_impl_witness.2b1) [symbolic] +// CHECK:STDOUT: %AddWith.WithSelf.Op.type.977: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%U.as_type.b61, %AddWith.facet.fea) [symbolic] +// CHECK:STDOUT: %.a30: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.977, %AddWith.facet.fea [symbolic] +// CHECK:STDOUT: %impl.elem1.b05: %.a30 = impl_witness_access %AddWith.lookup_impl_witness.2b1, element1 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.78d: = specific_impl_function %impl.elem1.b05, @AddWith.WithSelf.Op(%U.as_type.b61, %AddWith.facet.fea) [symbolic] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Result, @Destroy [symbolic] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.d3ece9.2: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Result) [symbolic] // CHECK:STDOUT: %.53a: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.d3ece9.2, %Result [symbolic] @@ -369,30 +372,33 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.WithSelf.Op.97a: %SubWith.WithSelf.Op.type.68d = struct_value () [symbolic] // CHECK:STDOUT: %SubWith.type.b5d: type = facet_type <@SubWith.1, @SubWith.1(%U.as_type.b61)> [symbolic] // CHECK:STDOUT: %facet_type.d46: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%U.as_type.b61)> [symbolic] -// CHECK:STDOUT: %.Self.642: %facet_type.d46 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.efa: %facet_type.d46 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %SubWith.assoc_type.3a1: type = assoc_entity_type @SubWith.1, @SubWith.1(%U.as_type.b61) [symbolic] // CHECK:STDOUT: %assoc0.729: %SubWith.assoc_type.3a1 = assoc_entity element0, imports.%Core.import_ref.190e [symbolic] // CHECK:STDOUT: %assoc1.8fd: %SubWith.assoc_type.3a1 = assoc_entity element1, imports.%Core.import_ref.3a4 [symbolic] // CHECK:STDOUT: %require_complete.cda: = require_complete_type %facet_type.d46 [symbolic] -// CHECK:STDOUT: %.Self.as_type.715: type = facet_access_type %.Self.642 [symbolic] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.ce5: = lookup_impl_witness %.Self.642, @SubWith.1, @SubWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %impl.elem0.0fb: type = impl_witness_access %SubWith.lookup_impl_witness.ce5, element0 [symbolic] -// CHECK:STDOUT: %facet_type.5a5: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%U.as_type.b61) where %impl.elem0.0fb = %Result.as_type> [symbolic] -// CHECK:STDOUT: %pattern_type.156: type = pattern_type %facet_type.5a5 [symbolic] -// CHECK:STDOUT: %T.patt.53c: %pattern_type.156 = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %T.967: %facet_type.5a5 = symbolic_binding T, 2 [symbolic] -// CHECK:STDOUT: %T.as_type.b22: type = facet_access_type %T.967 [symbolic] -// CHECK:STDOUT: %pattern_type.000: type = pattern_type %T.as_type.b22 [symbolic] -// CHECK:STDOUT: %x.param_patt.408: %pattern_type.000 = value_param_pattern [symbolic] -// CHECK:STDOUT: %x.patt.a66: %pattern_type.000 = at_binding_pattern x, %x.param_patt.408 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.79f: type = facet_access_type %.Self.frozen.efa [symbolic] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.acf: = lookup_impl_witness %.Self.frozen.efa, @SubWith.1, @SubWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.050: type = impl_witness_access %SubWith.lookup_impl_witness.acf, element0 [symbolic] +// CHECK:STDOUT: %.Self.d13: %facet_type.d46 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.5d0: = lookup_impl_witness %.Self.d13, @SubWith.1, @SubWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.e4e: type = impl_witness_access %SubWith.lookup_impl_witness.5d0, element0 [symbolic] +// CHECK:STDOUT: %facet_type.eeb: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%U.as_type.b61) where %impl.elem0.e4e = %Result.as_type> [symbolic] +// CHECK:STDOUT: %pattern_type.502: type = pattern_type %facet_type.eeb [symbolic] +// CHECK:STDOUT: %T.patt.cd4: %pattern_type.502 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %T.bf6: %facet_type.eeb = symbolic_binding T, 2 [symbolic] +// CHECK:STDOUT: %T.as_type.58f: type = facet_access_type %T.bf6 [symbolic] +// CHECK:STDOUT: %pattern_type.a10: type = pattern_type %T.as_type.58f [symbolic] +// CHECK:STDOUT: %x.param_patt.02e: %pattern_type.a10 = value_param_pattern [symbolic] +// CHECK:STDOUT: %x.patt.eb5: %pattern_type.a10 = at_binding_pattern x, %x.param_patt.02e [symbolic] // CHECK:STDOUT: %require_complete.6ff: = require_complete_type %SubWith.type.b5d [symbolic] // CHECK:STDOUT: %assoc1.178: %SubWith.assoc_type.b0b = assoc_entity element1, imports.%Core.import_ref.b59 [symbolic] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.07c: = lookup_impl_witness %T.967, @SubWith.1, @SubWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %SubWith.facet.44a: %SubWith.type.b5d = facet_value %T.as_type.b22, (%SubWith.lookup_impl_witness.07c) [symbolic] -// CHECK:STDOUT: %SubWith.WithSelf.Op.type.1fe: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%U.as_type.b61, %SubWith.facet.44a) [symbolic] -// CHECK:STDOUT: %.fa2: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.1fe, %SubWith.facet.44a [symbolic] -// CHECK:STDOUT: %impl.elem1.fc7: %.fa2 = impl_witness_access %SubWith.lookup_impl_witness.07c, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.3fc: = specific_impl_function %impl.elem1.fc7, @SubWith.WithSelf.Op(%U.as_type.b61, %SubWith.facet.44a) [symbolic] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.ce5: = lookup_impl_witness %T.bf6, @SubWith.1, @SubWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %SubWith.facet.f6a: %SubWith.type.b5d = facet_value %T.as_type.58f, (%SubWith.lookup_impl_witness.ce5) [symbolic] +// CHECK:STDOUT: %SubWith.WithSelf.Op.type.4fe: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%U.as_type.b61, %SubWith.facet.f6a) [symbolic] +// CHECK:STDOUT: %.a4a: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.4fe, %SubWith.facet.f6a [symbolic] +// CHECK:STDOUT: %impl.elem1.e4f: %.a4a = impl_witness_access %SubWith.lookup_impl_witness.ce5, element1 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.46d: = specific_impl_function %impl.elem1.e4f, @SubWith.WithSelf.Op(%U.as_type.b61, %SubWith.facet.f6a) [symbolic] // CHECK:STDOUT: %MulWith.type.f84: type = facet_type <@MulWith.1, @MulWith.1(%Other)> [symbolic] // CHECK:STDOUT: %Self.941: %MulWith.type.f84 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %MulWith.assoc_type.7b2: type = assoc_entity_type @MulWith.1, @MulWith.1(%Other) [symbolic] @@ -400,30 +406,33 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.WithSelf.Op.a75: %MulWith.WithSelf.Op.type.176 = struct_value () [symbolic] // CHECK:STDOUT: %MulWith.type.f02: type = facet_type <@MulWith.1, @MulWith.1(%U.as_type.b61)> [symbolic] // CHECK:STDOUT: %facet_type.f87: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%U.as_type.b61)> [symbolic] -// CHECK:STDOUT: %.Self.b68: %facet_type.f87 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.463: %facet_type.f87 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %MulWith.assoc_type.a12: type = assoc_entity_type @MulWith.1, @MulWith.1(%U.as_type.b61) [symbolic] // CHECK:STDOUT: %assoc0.116: %MulWith.assoc_type.a12 = assoc_entity element0, imports.%Core.import_ref.59c [symbolic] // CHECK:STDOUT: %assoc1.a0f: %MulWith.assoc_type.a12 = assoc_entity element1, imports.%Core.import_ref.5a0 [symbolic] // CHECK:STDOUT: %require_complete.0a3: = require_complete_type %facet_type.f87 [symbolic] -// CHECK:STDOUT: %.Self.as_type.d1e: type = facet_access_type %.Self.b68 [symbolic] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.0d7: = lookup_impl_witness %.Self.b68, @MulWith.1, @MulWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %impl.elem0.10f: type = impl_witness_access %MulWith.lookup_impl_witness.0d7, element0 [symbolic] -// CHECK:STDOUT: %facet_type.c32: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%U.as_type.b61) where %impl.elem0.10f = %Result.as_type> [symbolic] -// CHECK:STDOUT: %pattern_type.d38: type = pattern_type %facet_type.c32 [symbolic] -// CHECK:STDOUT: %T.patt.881: %pattern_type.d38 = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %T.546: %facet_type.c32 = symbolic_binding T, 2 [symbolic] -// CHECK:STDOUT: %T.as_type.427: type = facet_access_type %T.546 [symbolic] -// CHECK:STDOUT: %pattern_type.d10: type = pattern_type %T.as_type.427 [symbolic] -// CHECK:STDOUT: %x.param_patt.df8: %pattern_type.d10 = value_param_pattern [symbolic] -// CHECK:STDOUT: %x.patt.32c: %pattern_type.d10 = at_binding_pattern x, %x.param_patt.df8 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.e91: type = facet_access_type %.Self.frozen.463 [symbolic] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.637: = lookup_impl_witness %.Self.frozen.463, @MulWith.1, @MulWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.132: type = impl_witness_access %MulWith.lookup_impl_witness.637, element0 [symbolic] +// CHECK:STDOUT: %.Self.588: %facet_type.f87 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.d4f: = lookup_impl_witness %.Self.588, @MulWith.1, @MulWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.62f: type = impl_witness_access %MulWith.lookup_impl_witness.d4f, element0 [symbolic] +// CHECK:STDOUT: %facet_type.0e5: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%U.as_type.b61) where %impl.elem0.62f = %Result.as_type> [symbolic] +// CHECK:STDOUT: %pattern_type.e8a: type = pattern_type %facet_type.0e5 [symbolic] +// CHECK:STDOUT: %T.patt.dec: %pattern_type.e8a = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %T.9a2: %facet_type.0e5 = symbolic_binding T, 2 [symbolic] +// CHECK:STDOUT: %T.as_type.83f: type = facet_access_type %T.9a2 [symbolic] +// CHECK:STDOUT: %pattern_type.fff: type = pattern_type %T.as_type.83f [symbolic] +// CHECK:STDOUT: %x.param_patt.f8f: %pattern_type.fff = value_param_pattern [symbolic] +// CHECK:STDOUT: %x.patt.909: %pattern_type.fff = at_binding_pattern x, %x.param_patt.f8f [symbolic] // CHECK:STDOUT: %require_complete.861: = require_complete_type %MulWith.type.f02 [symbolic] // CHECK:STDOUT: %assoc1.8f7: %MulWith.assoc_type.7b2 = assoc_entity element1, imports.%Core.import_ref.955 [symbolic] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.a55: = lookup_impl_witness %T.546, @MulWith.1, @MulWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %MulWith.facet.5c8: %MulWith.type.f02 = facet_value %T.as_type.427, (%MulWith.lookup_impl_witness.a55) [symbolic] -// CHECK:STDOUT: %MulWith.WithSelf.Op.type.7b0: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%U.as_type.b61, %MulWith.facet.5c8) [symbolic] -// CHECK:STDOUT: %.476: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.7b0, %MulWith.facet.5c8 [symbolic] -// CHECK:STDOUT: %impl.elem1.7c4: %.476 = impl_witness_access %MulWith.lookup_impl_witness.a55, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.57f: = specific_impl_function %impl.elem1.7c4, @MulWith.WithSelf.Op(%U.as_type.b61, %MulWith.facet.5c8) [symbolic] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.444: = lookup_impl_witness %T.9a2, @MulWith.1, @MulWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %MulWith.facet.b99: %MulWith.type.f02 = facet_value %T.as_type.83f, (%MulWith.lookup_impl_witness.444) [symbolic] +// CHECK:STDOUT: %MulWith.WithSelf.Op.type.c95: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%U.as_type.b61, %MulWith.facet.b99) [symbolic] +// CHECK:STDOUT: %.a49: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.c95, %MulWith.facet.b99 [symbolic] +// CHECK:STDOUT: %impl.elem1.a7b: %.a49 = impl_witness_access %MulWith.lookup_impl_witness.444, element1 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.eab: = specific_impl_function %impl.elem1.a7b, @MulWith.WithSelf.Op(%U.as_type.b61, %MulWith.facet.b99) [symbolic] // CHECK:STDOUT: %DivWith.type.13f: type = facet_type <@DivWith.1, @DivWith.1(%Other)> [symbolic] // CHECK:STDOUT: %Self.16a: %DivWith.type.13f = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %DivWith.assoc_type.d8b: type = assoc_entity_type @DivWith.1, @DivWith.1(%Other) [symbolic] @@ -431,30 +440,33 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.WithSelf.Op.51e: %DivWith.WithSelf.Op.type.0f0 = struct_value () [symbolic] // CHECK:STDOUT: %DivWith.type.523: type = facet_type <@DivWith.1, @DivWith.1(%U.as_type.b61)> [symbolic] // CHECK:STDOUT: %facet_type.86cd: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%U.as_type.b61)> [symbolic] -// CHECK:STDOUT: %.Self.10e: %facet_type.86cd = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.1f9: %facet_type.86cd = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %DivWith.assoc_type.cf4: type = assoc_entity_type @DivWith.1, @DivWith.1(%U.as_type.b61) [symbolic] // CHECK:STDOUT: %assoc0.c57: %DivWith.assoc_type.cf4 = assoc_entity element0, imports.%Core.import_ref.dee [symbolic] // CHECK:STDOUT: %assoc1.4eb: %DivWith.assoc_type.cf4 = assoc_entity element1, imports.%Core.import_ref.7845 [symbolic] // CHECK:STDOUT: %require_complete.4d7: = require_complete_type %facet_type.86cd [symbolic] -// CHECK:STDOUT: %.Self.as_type.c52: type = facet_access_type %.Self.10e [symbolic] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.d63: = lookup_impl_witness %.Self.10e, @DivWith.1, @DivWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %impl.elem0.df8: type = impl_witness_access %DivWith.lookup_impl_witness.d63, element0 [symbolic] -// CHECK:STDOUT: %facet_type.2f8: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%U.as_type.b61) where %impl.elem0.df8 = %Result.as_type> [symbolic] -// CHECK:STDOUT: %pattern_type.297: type = pattern_type %facet_type.2f8 [symbolic] -// CHECK:STDOUT: %T.patt.7ab: %pattern_type.297 = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %T.040: %facet_type.2f8 = symbolic_binding T, 2 [symbolic] -// CHECK:STDOUT: %T.as_type.a31: type = facet_access_type %T.040 [symbolic] -// CHECK:STDOUT: %pattern_type.126: type = pattern_type %T.as_type.a31 [symbolic] -// CHECK:STDOUT: %x.param_patt.422: %pattern_type.126 = value_param_pattern [symbolic] -// CHECK:STDOUT: %x.patt.bed: %pattern_type.126 = at_binding_pattern x, %x.param_patt.422 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.8ca: type = facet_access_type %.Self.frozen.1f9 [symbolic] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.154: = lookup_impl_witness %.Self.frozen.1f9, @DivWith.1, @DivWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.252: type = impl_witness_access %DivWith.lookup_impl_witness.154, element0 [symbolic] +// CHECK:STDOUT: %.Self.862: %facet_type.86cd = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.d02: = lookup_impl_witness %.Self.862, @DivWith.1, @DivWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.606: type = impl_witness_access %DivWith.lookup_impl_witness.d02, element0 [symbolic] +// CHECK:STDOUT: %facet_type.ed9: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%U.as_type.b61) where %impl.elem0.606 = %Result.as_type> [symbolic] +// CHECK:STDOUT: %pattern_type.07c: type = pattern_type %facet_type.ed9 [symbolic] +// CHECK:STDOUT: %T.patt.869: %pattern_type.07c = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %T.4bb: %facet_type.ed9 = symbolic_binding T, 2 [symbolic] +// CHECK:STDOUT: %T.as_type.a74: type = facet_access_type %T.4bb [symbolic] +// CHECK:STDOUT: %pattern_type.b83: type = pattern_type %T.as_type.a74 [symbolic] +// CHECK:STDOUT: %x.param_patt.21f: %pattern_type.b83 = value_param_pattern [symbolic] +// CHECK:STDOUT: %x.patt.46c: %pattern_type.b83 = at_binding_pattern x, %x.param_patt.21f [symbolic] // CHECK:STDOUT: %require_complete.026: = require_complete_type %DivWith.type.523 [symbolic] // CHECK:STDOUT: %assoc1.7b1: %DivWith.assoc_type.d8b = assoc_entity element1, imports.%Core.import_ref.8b6 [symbolic] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.df2: = lookup_impl_witness %T.040, @DivWith.1, @DivWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %DivWith.facet.ac1: %DivWith.type.523 = facet_value %T.as_type.a31, (%DivWith.lookup_impl_witness.df2) [symbolic] -// CHECK:STDOUT: %DivWith.WithSelf.Op.type.cb2: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%U.as_type.b61, %DivWith.facet.ac1) [symbolic] -// CHECK:STDOUT: %.2d3: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.cb2, %DivWith.facet.ac1 [symbolic] -// CHECK:STDOUT: %impl.elem1.254: %.2d3 = impl_witness_access %DivWith.lookup_impl_witness.df2, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.518: = specific_impl_function %impl.elem1.254, @DivWith.WithSelf.Op(%U.as_type.b61, %DivWith.facet.ac1) [symbolic] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.831: = lookup_impl_witness %T.4bb, @DivWith.1, @DivWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %DivWith.facet.5f7: %DivWith.type.523 = facet_value %T.as_type.a74, (%DivWith.lookup_impl_witness.831) [symbolic] +// CHECK:STDOUT: %DivWith.WithSelf.Op.type.1b2: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%U.as_type.b61, %DivWith.facet.5f7) [symbolic] +// CHECK:STDOUT: %.6b1: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.1b2, %DivWith.facet.5f7 [symbolic] +// CHECK:STDOUT: %impl.elem1.bfe: %.6b1 = impl_witness_access %DivWith.lookup_impl_witness.831, element1 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.e98: = specific_impl_function %impl.elem1.bfe, @DivWith.WithSelf.Op(%U.as_type.b61, %DivWith.facet.5f7) [symbolic] // CHECK:STDOUT: %ModWith.type.2e8: type = facet_type <@ModWith.1, @ModWith.1(%Other)> [symbolic] // CHECK:STDOUT: %Self.0ef: %ModWith.type.2e8 = symbolic_binding Self, 1 [symbolic] // CHECK:STDOUT: %ModWith.assoc_type.316: type = assoc_entity_type @ModWith.1, @ModWith.1(%Other) [symbolic] @@ -462,30 +474,33 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.WithSelf.Op.9e4: %ModWith.WithSelf.Op.type.d14 = struct_value () [symbolic] // CHECK:STDOUT: %ModWith.type.937: type = facet_type <@ModWith.1, @ModWith.1(%U.as_type.b61)> [symbolic] // CHECK:STDOUT: %facet_type.b18: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%U.as_type.b61)> [symbolic] -// CHECK:STDOUT: %.Self.0f7: %facet_type.b18 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.f70: %facet_type.b18 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %ModWith.assoc_type.626: type = assoc_entity_type @ModWith.1, @ModWith.1(%U.as_type.b61) [symbolic] // CHECK:STDOUT: %assoc0.56e: %ModWith.assoc_type.626 = assoc_entity element0, imports.%Core.import_ref.61a [symbolic] // CHECK:STDOUT: %assoc1.6d1: %ModWith.assoc_type.626 = assoc_entity element1, imports.%Core.import_ref.b56 [symbolic] // CHECK:STDOUT: %require_complete.708: = require_complete_type %facet_type.b18 [symbolic] -// CHECK:STDOUT: %.Self.as_type.f55: type = facet_access_type %.Self.0f7 [symbolic] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.4a2: = lookup_impl_witness %.Self.0f7, @ModWith.1, @ModWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %impl.elem0.36b: type = impl_witness_access %ModWith.lookup_impl_witness.4a2, element0 [symbolic] -// CHECK:STDOUT: %facet_type.9a0: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%U.as_type.b61) where %impl.elem0.36b = %Result.as_type> [symbolic] -// CHECK:STDOUT: %pattern_type.82f: type = pattern_type %facet_type.9a0 [symbolic] -// CHECK:STDOUT: %T.patt.74f: %pattern_type.82f = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %T.095: %facet_type.9a0 = symbolic_binding T, 2 [symbolic] -// CHECK:STDOUT: %T.as_type.fcd: type = facet_access_type %T.095 [symbolic] -// CHECK:STDOUT: %pattern_type.2e7: type = pattern_type %T.as_type.fcd [symbolic] -// CHECK:STDOUT: %x.param_patt.a0f: %pattern_type.2e7 = value_param_pattern [symbolic] -// CHECK:STDOUT: %x.patt.d43: %pattern_type.2e7 = at_binding_pattern x, %x.param_patt.a0f [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.447: type = facet_access_type %.Self.frozen.f70 [symbolic] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.80e: = lookup_impl_witness %.Self.frozen.f70, @ModWith.1, @ModWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.523: type = impl_witness_access %ModWith.lookup_impl_witness.80e, element0 [symbolic] +// CHECK:STDOUT: %.Self.a68: %facet_type.b18 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.569: = lookup_impl_witness %.Self.a68, @ModWith.1, @ModWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %impl.elem0.c51: type = impl_witness_access %ModWith.lookup_impl_witness.569, element0 [symbolic] +// CHECK:STDOUT: %facet_type.639: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%U.as_type.b61) where %impl.elem0.c51 = %Result.as_type> [symbolic] +// CHECK:STDOUT: %pattern_type.d85: type = pattern_type %facet_type.639 [symbolic] +// CHECK:STDOUT: %T.patt.49b: %pattern_type.d85 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %T.999: %facet_type.639 = symbolic_binding T, 2 [symbolic] +// CHECK:STDOUT: %T.as_type.1c2: type = facet_access_type %T.999 [symbolic] +// CHECK:STDOUT: %pattern_type.01b: type = pattern_type %T.as_type.1c2 [symbolic] +// CHECK:STDOUT: %x.param_patt.f25: %pattern_type.01b = value_param_pattern [symbolic] +// CHECK:STDOUT: %x.patt.804: %pattern_type.01b = at_binding_pattern x, %x.param_patt.f25 [symbolic] // CHECK:STDOUT: %require_complete.a4a: = require_complete_type %ModWith.type.937 [symbolic] // CHECK:STDOUT: %assoc1.132: %ModWith.assoc_type.316 = assoc_entity element1, imports.%Core.import_ref.33c [symbolic] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.054: = lookup_impl_witness %T.095, @ModWith.1, @ModWith.1(%U.as_type.b61) [symbolic] -// CHECK:STDOUT: %ModWith.facet.555: %ModWith.type.937 = facet_value %T.as_type.fcd, (%ModWith.lookup_impl_witness.054) [symbolic] -// CHECK:STDOUT: %ModWith.WithSelf.Op.type.cfa: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%U.as_type.b61, %ModWith.facet.555) [symbolic] -// CHECK:STDOUT: %.973: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.cfa, %ModWith.facet.555 [symbolic] -// CHECK:STDOUT: %impl.elem1.f20: %.973 = impl_witness_access %ModWith.lookup_impl_witness.054, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.37e: = specific_impl_function %impl.elem1.f20, @ModWith.WithSelf.Op(%U.as_type.b61, %ModWith.facet.555) [symbolic] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.e17: = lookup_impl_witness %T.999, @ModWith.1, @ModWith.1(%U.as_type.b61) [symbolic] +// CHECK:STDOUT: %ModWith.facet.874: %ModWith.type.937 = facet_value %T.as_type.1c2, (%ModWith.lookup_impl_witness.e17) [symbolic] +// CHECK:STDOUT: %ModWith.WithSelf.Op.type.314: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%U.as_type.b61, %ModWith.facet.874) [symbolic] +// CHECK:STDOUT: %.195: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.314, %ModWith.facet.874 [symbolic] +// CHECK:STDOUT: %impl.elem1.715: %.195 = impl_witness_access %ModWith.lookup_impl_witness.e17, element1 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.0b2: = specific_impl_function %impl.elem1.715, @ModWith.WithSelf.Op(%U.as_type.b61, %ModWith.facet.874) [symbolic] // CHECK:STDOUT: %Int16: type = class_type @Int16 [concrete] // CHECK:STDOUT: %pattern_type.785: type = pattern_type %Int16 [concrete] // CHECK:STDOUT: %Int32: type = class_type @Int32 [concrete] @@ -506,10 +521,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %custom_witness.e7a31c.1: = custom_witness (%Int16.Op.4dca31.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.2cc: %Destroy.type = facet_value %Int16, (%custom_witness.e7a31c.1) [concrete] // CHECK:STDOUT: %facet_type.297: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int16)> [concrete] -// CHECK:STDOUT: %.Self.120: %facet_type.297 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.560: = lookup_impl_witness %.Self.120, @AddWith.1, @AddWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.7e0: type = impl_witness_access %AddWith.lookup_impl_witness.560, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.376: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int16) where %impl.elem0.7e0 = %Int16> [concrete] +// CHECK:STDOUT: %.Self.45a: %facet_type.297 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.131: = lookup_impl_witness %.Self.45a, @AddWith.1, @AddWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.28c: type = impl_witness_access %AddWith.lookup_impl_witness.131, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.225: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int16) where %impl.elem0.28c = %Int16> [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.2: type = fn_type @Destroy.Op.loc176_34.2 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.2: %Destroy.Op.type.1d8f74.2 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.2: = custom_witness (%Destroy.Op.1a2547.2), @Destroy [concrete] @@ -521,20 +536,23 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.72717c.1: %Op.type.442b68.1 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.e5c: %Destroy.type = facet_value %i16, (%custom_witness.df9cc1.2) [concrete] // CHECK:STDOUT: %custom_witness.248: = custom_witness (%Int16, %Op.72717c.1), @AddWith.1, @AddWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.b750: %facet_type.376 = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.248) [concrete] +// CHECK:STDOUT: %facet_value.696: %facet_type.225 = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.248) [concrete] +// CHECK:STDOUT: %.Self.frozen.7e3: %facet_type.297 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.a82: = complete_type_witness %facet_type.297 [concrete] -// CHECK:STDOUT: %.Self.as_type.9c7: type = facet_access_type %.Self.120 [symbolic_self] -// CHECK:STDOUT: %pattern_type.48e: type = pattern_type %facet_type.376 [concrete] -// CHECK:STDOUT: %T.patt.5cc: %pattern_type.48e = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.85e: type = facet_access_type %.Self.frozen.7e3 [symbolic_self] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.5b7: = lookup_impl_witness %.Self.frozen.7e3, @AddWith.1, @AddWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.d80: type = impl_witness_access %AddWith.lookup_impl_witness.5b7, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.34a: type = pattern_type %facet_type.225 [concrete] +// CHECK:STDOUT: %T.patt.3ec: %pattern_type.34a = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %result.param_patt.be6: %pattern_type.785 = value_param_pattern [concrete] // CHECK:STDOUT: %result.patt.488: %pattern_type.785 = at_binding_pattern result, %result.param_patt.be6 [concrete] // CHECK:STDOUT: %y.param_patt.418: %pattern_type.785 = value_param_pattern [concrete] // CHECK:STDOUT: %y.patt.4e6: %pattern_type.785 = at_binding_pattern y, %y.param_patt.418 [concrete] // CHECK:STDOUT: %facet_type.b15: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int16)> [concrete] -// CHECK:STDOUT: %.Self.4e4: %facet_type.b15 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.780: = lookup_impl_witness %.Self.4e4, @SubWith.1, @SubWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.104: type = impl_witness_access %SubWith.lookup_impl_witness.780, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.2e5: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int16) where %impl.elem0.104 = %Int16> [concrete] +// CHECK:STDOUT: %.Self.415: %facet_type.b15 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.266: = lookup_impl_witness %.Self.415, @SubWith.1, @SubWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.4a0: type = impl_witness_access %SubWith.lookup_impl_witness.266, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.b71: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int16) where %impl.elem0.4a0 = %Int16> [concrete] // CHECK:STDOUT: %SubWith.type.b12: type = facet_type <@SubWith.1, @SubWith.1(%Int16)> [concrete] // CHECK:STDOUT: %SubWith.assoc_type.eb8: type = assoc_entity_type @SubWith.1, @SubWith.1(%Int16) [concrete] // CHECK:STDOUT: %assoc0.a90: %SubWith.assoc_type.eb8 = assoc_entity element0, imports.%Core.import_ref.190e [concrete] @@ -542,16 +560,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.2: type = fn_type @Op.2 [concrete] // CHECK:STDOUT: %Op.72717c.2: %Op.type.442b68.2 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.f14: = custom_witness (%Int16, %Op.72717c.2), @SubWith.1, @SubWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.9fa: %facet_type.2e5 = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.f14) [concrete] +// CHECK:STDOUT: %facet_value.031: %facet_type.b71 = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.f14) [concrete] +// CHECK:STDOUT: %.Self.frozen.581: %facet_type.b15 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.647: = complete_type_witness %facet_type.b15 [concrete] -// CHECK:STDOUT: %.Self.as_type.bcf: type = facet_access_type %.Self.4e4 [symbolic_self] -// CHECK:STDOUT: %pattern_type.943: type = pattern_type %facet_type.2e5 [concrete] -// CHECK:STDOUT: %T.patt.bc1: %pattern_type.943 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.092: type = facet_access_type %.Self.frozen.581 [symbolic_self] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.b30: = lookup_impl_witness %.Self.frozen.581, @SubWith.1, @SubWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.748: type = impl_witness_access %SubWith.lookup_impl_witness.b30, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.f54: type = pattern_type %facet_type.b71 [concrete] +// CHECK:STDOUT: %T.patt.842: %pattern_type.f54 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.a64: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int16)> [concrete] -// CHECK:STDOUT: %.Self.c25: %facet_type.a64 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.e32: = lookup_impl_witness %.Self.c25, @MulWith.1, @MulWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.472: type = impl_witness_access %MulWith.lookup_impl_witness.e32, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.e71: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int16) where %impl.elem0.472 = %Int16> [concrete] +// CHECK:STDOUT: %.Self.00f: %facet_type.a64 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.782: = lookup_impl_witness %.Self.00f, @MulWith.1, @MulWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.8de: type = impl_witness_access %MulWith.lookup_impl_witness.782, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.662: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int16) where %impl.elem0.8de = %Int16> [concrete] // CHECK:STDOUT: %MulWith.type.c18: type = facet_type <@MulWith.1, @MulWith.1(%Int16)> [concrete] // CHECK:STDOUT: %MulWith.assoc_type.f15: type = assoc_entity_type @MulWith.1, @MulWith.1(%Int16) [concrete] // CHECK:STDOUT: %assoc0.f8b: %MulWith.assoc_type.f15 = assoc_entity element0, imports.%Core.import_ref.59c [concrete] @@ -559,16 +580,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.3: type = fn_type @Op.3 [concrete] // CHECK:STDOUT: %Op.72717c.3: %Op.type.442b68.3 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.6bd: = custom_witness (%Int16, %Op.72717c.3), @MulWith.1, @MulWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.074: %facet_type.e71 = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.6bd) [concrete] +// CHECK:STDOUT: %facet_value.920: %facet_type.662 = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.6bd) [concrete] +// CHECK:STDOUT: %.Self.frozen.05e: %facet_type.a64 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.4d3: = complete_type_witness %facet_type.a64 [concrete] -// CHECK:STDOUT: %.Self.as_type.354: type = facet_access_type %.Self.c25 [symbolic_self] -// CHECK:STDOUT: %pattern_type.b79: type = pattern_type %facet_type.e71 [concrete] -// CHECK:STDOUT: %T.patt.544: %pattern_type.b79 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.2d1: type = facet_access_type %.Self.frozen.05e [symbolic_self] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.701: = lookup_impl_witness %.Self.frozen.05e, @MulWith.1, @MulWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.381: type = impl_witness_access %MulWith.lookup_impl_witness.701, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.90f: type = pattern_type %facet_type.662 [concrete] +// CHECK:STDOUT: %T.patt.8ad: %pattern_type.90f = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.0b4: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int16)> [concrete] -// CHECK:STDOUT: %.Self.927: %facet_type.0b4 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.ac4: = lookup_impl_witness %.Self.927, @DivWith.1, @DivWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.6aa: type = impl_witness_access %DivWith.lookup_impl_witness.ac4, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.84f: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int16) where %impl.elem0.6aa = %Int16> [concrete] +// CHECK:STDOUT: %.Self.9b5: %facet_type.0b4 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.648: = lookup_impl_witness %.Self.9b5, @DivWith.1, @DivWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.36a: type = impl_witness_access %DivWith.lookup_impl_witness.648, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.bd6: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int16) where %impl.elem0.36a = %Int16> [concrete] // CHECK:STDOUT: %DivWith.type.6f9: type = facet_type <@DivWith.1, @DivWith.1(%Int16)> [concrete] // CHECK:STDOUT: %DivWith.assoc_type.333: type = assoc_entity_type @DivWith.1, @DivWith.1(%Int16) [concrete] // CHECK:STDOUT: %assoc0.962: %DivWith.assoc_type.333 = assoc_entity element0, imports.%Core.import_ref.dee [concrete] @@ -576,16 +600,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.4: type = fn_type @Op.4 [concrete] // CHECK:STDOUT: %Op.72717c.4: %Op.type.442b68.4 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.22c: = custom_witness (%Int16, %Op.72717c.4), @DivWith.1, @DivWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.c41: %facet_type.84f = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.22c) [concrete] +// CHECK:STDOUT: %facet_value.ce6: %facet_type.bd6 = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.22c) [concrete] +// CHECK:STDOUT: %.Self.frozen.ecc: %facet_type.0b4 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.acc: = complete_type_witness %facet_type.0b4 [concrete] -// CHECK:STDOUT: %.Self.as_type.87a: type = facet_access_type %.Self.927 [symbolic_self] -// CHECK:STDOUT: %pattern_type.abe: type = pattern_type %facet_type.84f [concrete] -// CHECK:STDOUT: %T.patt.15c: %pattern_type.abe = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.851: type = facet_access_type %.Self.frozen.ecc [symbolic_self] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.6fa: = lookup_impl_witness %.Self.frozen.ecc, @DivWith.1, @DivWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e0f: type = impl_witness_access %DivWith.lookup_impl_witness.6fa, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.692: type = pattern_type %facet_type.bd6 [concrete] +// CHECK:STDOUT: %T.patt.00c: %pattern_type.692 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.ee8: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int16)> [concrete] -// CHECK:STDOUT: %.Self.a1e: %facet_type.ee8 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.c0b: = lookup_impl_witness %.Self.a1e, @ModWith.1, @ModWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.dae: type = impl_witness_access %ModWith.lookup_impl_witness.c0b, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.1b7: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int16) where %impl.elem0.dae = %Int16> [concrete] +// CHECK:STDOUT: %.Self.67f: %facet_type.ee8 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.af3: = lookup_impl_witness %.Self.67f, @ModWith.1, @ModWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.436: type = impl_witness_access %ModWith.lookup_impl_witness.af3, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.a2b: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int16) where %impl.elem0.436 = %Int16> [concrete] // CHECK:STDOUT: %ModWith.type.763: type = facet_type <@ModWith.1, @ModWith.1(%Int16)> [concrete] // CHECK:STDOUT: %ModWith.assoc_type.e6a: type = assoc_entity_type @ModWith.1, @ModWith.1(%Int16) [concrete] // CHECK:STDOUT: %assoc0.2cc: %ModWith.assoc_type.e6a = assoc_entity element0, imports.%Core.import_ref.61a [concrete] @@ -593,16 +620,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.5: type = fn_type @Op.5 [concrete] // CHECK:STDOUT: %Op.72717c.5: %Op.type.442b68.5 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.9e6: = custom_witness (%Int16, %Op.72717c.5), @ModWith.1, @ModWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.849: %facet_type.1b7 = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.9e6) [concrete] +// CHECK:STDOUT: %facet_value.cde: %facet_type.a2b = facet_value %i16, (%custom_witness.df9cc1.2, %custom_witness.9e6) [concrete] +// CHECK:STDOUT: %.Self.frozen.9a7: %facet_type.ee8 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.8fc: = complete_type_witness %facet_type.ee8 [concrete] -// CHECK:STDOUT: %.Self.as_type.1da: type = facet_access_type %.Self.a1e [symbolic_self] -// CHECK:STDOUT: %pattern_type.45b: type = pattern_type %facet_type.1b7 [concrete] -// CHECK:STDOUT: %T.patt.a2e: %pattern_type.45b = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.954: type = facet_access_type %.Self.frozen.9a7 [symbolic_self] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.689: = lookup_impl_witness %.Self.frozen.9a7, @ModWith.1, @ModWith.1(%Int16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.42c: type = impl_witness_access %ModWith.lookup_impl_witness.689, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.61d: type = pattern_type %facet_type.a2b [concrete] +// CHECK:STDOUT: %T.patt.a00: %pattern_type.61d = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.1cc: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%i16)> [concrete] -// CHECK:STDOUT: %.Self.b3b: %facet_type.1cc = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.fc6: = lookup_impl_witness %.Self.b3b, @AddWith.1, @AddWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.46e: type = impl_witness_access %AddWith.lookup_impl_witness.fc6, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.3ae: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%i16) where %impl.elem0.46e = %Int16> [concrete] +// CHECK:STDOUT: %.Self.a82: %facet_type.1cc = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.e27: = lookup_impl_witness %.Self.a82, @AddWith.1, @AddWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.115: type = impl_witness_access %AddWith.lookup_impl_witness.e27, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.b7b: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%i16) where %impl.elem0.115 = %Int16> [concrete] // CHECK:STDOUT: %AddWith.type.a36: type = facet_type <@AddWith.1, @AddWith.1(%i16)> [concrete] // CHECK:STDOUT: %AddWith.assoc_type.6bf: type = assoc_entity_type @AddWith.1, @AddWith.1(%i16) [concrete] // CHECK:STDOUT: %assoc0.e6b: %AddWith.assoc_type.6bf = assoc_entity element0, imports.%Core.import_ref.91f8 [concrete] @@ -610,20 +640,23 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.3: type = fn_type @Int16.Op.3 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.3: %Int16.Op.type.83af6e.3 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.b17: = custom_witness (%Int16, %Int16.Op.4dca31.3), @AddWith.1, @AddWith.1(%i16) [concrete] -// CHECK:STDOUT: %facet_value.dbc: %facet_type.3ae = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.b17) [concrete] +// CHECK:STDOUT: %facet_value.0c7: %facet_type.b7b = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.b17) [concrete] +// CHECK:STDOUT: %.Self.frozen.e5b: %facet_type.1cc = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.5a6: = complete_type_witness %facet_type.1cc [concrete] -// CHECK:STDOUT: %.Self.as_type.552: type = facet_access_type %.Self.b3b [symbolic_self] -// CHECK:STDOUT: %pattern_type.9c1: type = pattern_type %facet_type.3ae [concrete] -// CHECK:STDOUT: %T.patt.ec4: %pattern_type.9c1 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.b7c: type = facet_access_type %.Self.frozen.e5b [symbolic_self] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.047: = lookup_impl_witness %.Self.frozen.e5b, @AddWith.1, @AddWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f6a: type = impl_witness_access %AddWith.lookup_impl_witness.047, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.c51: type = pattern_type %facet_type.b7b [concrete] +// CHECK:STDOUT: %T.patt.5cb: %pattern_type.c51 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %x.param_patt.3b0: %pattern_type.785 = value_param_pattern [concrete] // CHECK:STDOUT: %x.patt.b76: %pattern_type.785 = at_binding_pattern x, %x.param_patt.3b0 [concrete] // CHECK:STDOUT: %y.param_patt.4b4: %pattern_type.203 = value_param_pattern [concrete] // CHECK:STDOUT: %y.patt.dd3: %pattern_type.203 = at_binding_pattern y, %y.param_patt.4b4 [concrete] // CHECK:STDOUT: %facet_type.cb2: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%i16)> [concrete] -// CHECK:STDOUT: %.Self.408: %facet_type.cb2 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.8c9: = lookup_impl_witness %.Self.408, @SubWith.1, @SubWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.727: type = impl_witness_access %SubWith.lookup_impl_witness.8c9, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.a54: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%i16) where %impl.elem0.727 = %Int16> [concrete] +// CHECK:STDOUT: %.Self.a84: %facet_type.cb2 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.581: = lookup_impl_witness %.Self.a84, @SubWith.1, @SubWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a77: type = impl_witness_access %SubWith.lookup_impl_witness.581, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.a67: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%i16) where %impl.elem0.a77 = %Int16> [concrete] // CHECK:STDOUT: %SubWith.type.08b: type = facet_type <@SubWith.1, @SubWith.1(%i16)> [concrete] // CHECK:STDOUT: %SubWith.assoc_type.077: type = assoc_entity_type @SubWith.1, @SubWith.1(%i16) [concrete] // CHECK:STDOUT: %assoc0.465: %SubWith.assoc_type.077 = assoc_entity element0, imports.%Core.import_ref.190e [concrete] @@ -631,16 +664,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.4: type = fn_type @Int16.Op.4 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.4: %Int16.Op.type.83af6e.4 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.b07: = custom_witness (%Int16, %Int16.Op.4dca31.4), @SubWith.1, @SubWith.1(%i16) [concrete] -// CHECK:STDOUT: %facet_value.5c8: %facet_type.a54 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.b07) [concrete] +// CHECK:STDOUT: %facet_value.33e: %facet_type.a67 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.b07) [concrete] +// CHECK:STDOUT: %.Self.frozen.bbc: %facet_type.cb2 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.090: = complete_type_witness %facet_type.cb2 [concrete] -// CHECK:STDOUT: %.Self.as_type.d2a: type = facet_access_type %.Self.408 [symbolic_self] -// CHECK:STDOUT: %pattern_type.612: type = pattern_type %facet_type.a54 [concrete] -// CHECK:STDOUT: %T.patt.c74: %pattern_type.612 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.ae6: type = facet_access_type %.Self.frozen.bbc [symbolic_self] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.596: = lookup_impl_witness %.Self.frozen.bbc, @SubWith.1, @SubWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.733: type = impl_witness_access %SubWith.lookup_impl_witness.596, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.486: type = pattern_type %facet_type.a67 [concrete] +// CHECK:STDOUT: %T.patt.eb2: %pattern_type.486 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.67c: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%i16)> [concrete] -// CHECK:STDOUT: %.Self.3be: %facet_type.67c = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.446: = lookup_impl_witness %.Self.3be, @MulWith.1, @MulWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.192: type = impl_witness_access %MulWith.lookup_impl_witness.446, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.d1d: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%i16) where %impl.elem0.192 = %Int16> [concrete] +// CHECK:STDOUT: %.Self.5dd: %facet_type.67c = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.092: = lookup_impl_witness %.Self.5dd, @MulWith.1, @MulWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.163: type = impl_witness_access %MulWith.lookup_impl_witness.092, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.d40: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%i16) where %impl.elem0.163 = %Int16> [concrete] // CHECK:STDOUT: %MulWith.type.55d: type = facet_type <@MulWith.1, @MulWith.1(%i16)> [concrete] // CHECK:STDOUT: %MulWith.assoc_type.212: type = assoc_entity_type @MulWith.1, @MulWith.1(%i16) [concrete] // CHECK:STDOUT: %assoc0.455: %MulWith.assoc_type.212 = assoc_entity element0, imports.%Core.import_ref.59c [concrete] @@ -648,16 +684,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.5: type = fn_type @Int16.Op.5 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.5: %Int16.Op.type.83af6e.5 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.8bd: = custom_witness (%Int16, %Int16.Op.4dca31.5), @MulWith.1, @MulWith.1(%i16) [concrete] -// CHECK:STDOUT: %facet_value.158: %facet_type.d1d = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.8bd) [concrete] +// CHECK:STDOUT: %facet_value.ba4: %facet_type.d40 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.8bd) [concrete] +// CHECK:STDOUT: %.Self.frozen.c15: %facet_type.67c = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.a8b: = complete_type_witness %facet_type.67c [concrete] -// CHECK:STDOUT: %.Self.as_type.523: type = facet_access_type %.Self.3be [symbolic_self] -// CHECK:STDOUT: %pattern_type.fc4: type = pattern_type %facet_type.d1d [concrete] -// CHECK:STDOUT: %T.patt.ce4: %pattern_type.fc4 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.225: type = facet_access_type %.Self.frozen.c15 [symbolic_self] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.481: = lookup_impl_witness %.Self.frozen.c15, @MulWith.1, @MulWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.574: type = impl_witness_access %MulWith.lookup_impl_witness.481, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.f6f: type = pattern_type %facet_type.d40 [concrete] +// CHECK:STDOUT: %T.patt.dc7: %pattern_type.f6f = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.86c8: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%i16)> [concrete] -// CHECK:STDOUT: %.Self.2ad: %facet_type.86c8 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.2b4: = lookup_impl_witness %.Self.2ad, @DivWith.1, @DivWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.7e7: type = impl_witness_access %DivWith.lookup_impl_witness.2b4, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.bdc: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%i16) where %impl.elem0.7e7 = %Int16> [concrete] +// CHECK:STDOUT: %.Self.d04: %facet_type.86c8 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.6ec: = lookup_impl_witness %.Self.d04, @DivWith.1, @DivWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.58b: type = impl_witness_access %DivWith.lookup_impl_witness.6ec, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.541: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%i16) where %impl.elem0.58b = %Int16> [concrete] // CHECK:STDOUT: %DivWith.type.ab0: type = facet_type <@DivWith.1, @DivWith.1(%i16)> [concrete] // CHECK:STDOUT: %DivWith.assoc_type.1f2: type = assoc_entity_type @DivWith.1, @DivWith.1(%i16) [concrete] // CHECK:STDOUT: %assoc0.be2: %DivWith.assoc_type.1f2 = assoc_entity element0, imports.%Core.import_ref.dee [concrete] @@ -665,16 +704,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.6: type = fn_type @Int16.Op.6 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.6: %Int16.Op.type.83af6e.6 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.963: = custom_witness (%Int16, %Int16.Op.4dca31.6), @DivWith.1, @DivWith.1(%i16) [concrete] -// CHECK:STDOUT: %facet_value.8dc: %facet_type.bdc = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.963) [concrete] +// CHECK:STDOUT: %facet_value.521: %facet_type.541 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.963) [concrete] +// CHECK:STDOUT: %.Self.frozen.128: %facet_type.86c8 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.1cb: = complete_type_witness %facet_type.86c8 [concrete] -// CHECK:STDOUT: %.Self.as_type.445: type = facet_access_type %.Self.2ad [symbolic_self] -// CHECK:STDOUT: %pattern_type.b62: type = pattern_type %facet_type.bdc [concrete] -// CHECK:STDOUT: %T.patt.596: %pattern_type.b62 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.ac3: type = facet_access_type %.Self.frozen.128 [symbolic_self] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.a5b: = lookup_impl_witness %.Self.frozen.128, @DivWith.1, @DivWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.4e9: type = impl_witness_access %DivWith.lookup_impl_witness.a5b, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.80a: type = pattern_type %facet_type.541 [concrete] +// CHECK:STDOUT: %T.patt.c06: %pattern_type.80a = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.afdb: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%i16)> [concrete] -// CHECK:STDOUT: %.Self.ceb: %facet_type.afdb = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.af5: = lookup_impl_witness %.Self.ceb, @ModWith.1, @ModWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.4a6: type = impl_witness_access %ModWith.lookup_impl_witness.af5, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.dde: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%i16) where %impl.elem0.4a6 = %Int16> [concrete] +// CHECK:STDOUT: %.Self.69d: %facet_type.afdb = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.b3b: = lookup_impl_witness %.Self.69d, @ModWith.1, @ModWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.0f8: type = impl_witness_access %ModWith.lookup_impl_witness.b3b, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.ee6: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%i16) where %impl.elem0.0f8 = %Int16> [concrete] // CHECK:STDOUT: %ModWith.type.0b2: type = facet_type <@ModWith.1, @ModWith.1(%i16)> [concrete] // CHECK:STDOUT: %ModWith.assoc_type.e06: type = assoc_entity_type @ModWith.1, @ModWith.1(%i16) [concrete] // CHECK:STDOUT: %assoc0.b5a: %ModWith.assoc_type.e06 = assoc_entity element0, imports.%Core.import_ref.61a [concrete] @@ -682,20 +724,23 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.7: type = fn_type @Int16.Op.7 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.7: %Int16.Op.type.83af6e.7 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.8f4: = custom_witness (%Int16, %Int16.Op.4dca31.7), @ModWith.1, @ModWith.1(%i16) [concrete] -// CHECK:STDOUT: %facet_value.8657: %facet_type.dde = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.8f4) [concrete] +// CHECK:STDOUT: %facet_value.ce1: %facet_type.ee6 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.8f4) [concrete] +// CHECK:STDOUT: %.Self.frozen.46c: %facet_type.afdb = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.1f9: = complete_type_witness %facet_type.afdb [concrete] -// CHECK:STDOUT: %.Self.as_type.1c1: type = facet_access_type %.Self.ceb [symbolic_self] -// CHECK:STDOUT: %pattern_type.9c7: type = pattern_type %facet_type.dde [concrete] -// CHECK:STDOUT: %T.patt.b55: %pattern_type.9c7 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.12f: type = facet_access_type %.Self.frozen.46c [symbolic_self] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.5ab: = lookup_impl_witness %.Self.frozen.46c, @ModWith.1, @ModWith.1(%i16) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.172: type = impl_witness_access %ModWith.lookup_impl_witness.5ab, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.4d8: type = pattern_type %facet_type.ee6 [concrete] +// CHECK:STDOUT: %T.patt.a7e: %pattern_type.4d8 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %Int32.Op.type.83af6e.1: type = fn_type @Int32.Op.1 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.1: %Int32.Op.type.83af6e.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.e7a31c.2: = custom_witness (%Int32.Op.4dca31.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.099: %Destroy.type = facet_value %Int32, (%custom_witness.e7a31c.2) [concrete] // CHECK:STDOUT: %facet_type.698: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int32)> [concrete] -// CHECK:STDOUT: %.Self.1bc: %facet_type.698 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.d80: = lookup_impl_witness %.Self.1bc, @AddWith.1, @AddWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.899: type = impl_witness_access %AddWith.lookup_impl_witness.d80, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.cf0: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int32) where %impl.elem0.899 = %Int32> [concrete] +// CHECK:STDOUT: %.Self.591: %facet_type.698 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.47a: = lookup_impl_witness %.Self.591, @AddWith.1, @AddWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.6e6: type = impl_witness_access %AddWith.lookup_impl_witness.47a, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.ecf: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int32) where %impl.elem0.6e6 = %Int32> [concrete] // CHECK:STDOUT: %AddWith.type.c71: type = facet_type <@AddWith.1, @AddWith.1(%Int32)> [concrete] // CHECK:STDOUT: %AddWith.assoc_type.72d: type = assoc_entity_type @AddWith.1, @AddWith.1(%Int32) [concrete] // CHECK:STDOUT: %assoc0.c2b: %AddWith.assoc_type.72d = assoc_entity element0, imports.%Core.import_ref.91f8 [concrete] @@ -703,20 +748,23 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.8: type = fn_type @Int16.Op.8 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.8: %Int16.Op.type.83af6e.8 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.e02e0c.1: = custom_witness (%Int32, %Int16.Op.4dca31.8), @AddWith.1, @AddWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.5c0: %facet_type.cf0 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.e02e0c.1) [concrete] +// CHECK:STDOUT: %facet_value.17e: %facet_type.ecf = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.e02e0c.1) [concrete] +// CHECK:STDOUT: %.Self.frozen.f1e: %facet_type.698 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.224: = complete_type_witness %facet_type.698 [concrete] -// CHECK:STDOUT: %.Self.as_type.cbd: type = facet_access_type %.Self.1bc [symbolic_self] -// CHECK:STDOUT: %pattern_type.44d: type = pattern_type %facet_type.cf0 [concrete] -// CHECK:STDOUT: %T.patt.fb1: %pattern_type.44d = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.440: type = facet_access_type %.Self.frozen.f1e [symbolic_self] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.7f6: = lookup_impl_witness %.Self.frozen.f1e, @AddWith.1, @AddWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.7a4: type = impl_witness_access %AddWith.lookup_impl_witness.7f6, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.c976: type = pattern_type %facet_type.ecf [concrete] +// CHECK:STDOUT: %T.patt.0a8: %pattern_type.c976 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %result.param_patt.e81: %pattern_type.8b4 = value_param_pattern [concrete] // CHECK:STDOUT: %result.patt.830: %pattern_type.8b4 = at_binding_pattern result, %result.param_patt.e81 [concrete] // CHECK:STDOUT: %y.param_patt.e0c: %pattern_type.8b4 = value_param_pattern [concrete] // CHECK:STDOUT: %y.patt.0a3: %pattern_type.8b4 = at_binding_pattern y, %y.param_patt.e0c [concrete] // CHECK:STDOUT: %facet_type.44e: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int32)> [concrete] -// CHECK:STDOUT: %.Self.4d7: %facet_type.44e = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.566: = lookup_impl_witness %.Self.4d7, @SubWith.1, @SubWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.ee1: type = impl_witness_access %SubWith.lookup_impl_witness.566, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.0f8: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int32) where %impl.elem0.ee1 = %Int32> [concrete] +// CHECK:STDOUT: %.Self.8ac: %facet_type.44e = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.f41: = lookup_impl_witness %.Self.8ac, @SubWith.1, @SubWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e31: type = impl_witness_access %SubWith.lookup_impl_witness.f41, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.630: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int32) where %impl.elem0.e31 = %Int32> [concrete] // CHECK:STDOUT: %SubWith.type.c81: type = facet_type <@SubWith.1, @SubWith.1(%Int32)> [concrete] // CHECK:STDOUT: %SubWith.assoc_type.68f: type = assoc_entity_type @SubWith.1, @SubWith.1(%Int32) [concrete] // CHECK:STDOUT: %assoc0.f11: %SubWith.assoc_type.68f = assoc_entity element0, imports.%Core.import_ref.190e [concrete] @@ -724,16 +772,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.9: type = fn_type @Int16.Op.9 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.9: %Int16.Op.type.83af6e.9 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.4dea15.1: = custom_witness (%Int32, %Int16.Op.4dca31.9), @SubWith.1, @SubWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.a20: %facet_type.0f8 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.4dea15.1) [concrete] +// CHECK:STDOUT: %facet_value.9eb: %facet_type.630 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.4dea15.1) [concrete] +// CHECK:STDOUT: %.Self.frozen.db8: %facet_type.44e = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.63f: = complete_type_witness %facet_type.44e [concrete] -// CHECK:STDOUT: %.Self.as_type.07c: type = facet_access_type %.Self.4d7 [symbolic_self] -// CHECK:STDOUT: %pattern_type.9624: type = pattern_type %facet_type.0f8 [concrete] -// CHECK:STDOUT: %T.patt.bd6: %pattern_type.9624 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.068: type = facet_access_type %.Self.frozen.db8 [symbolic_self] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.32d: = lookup_impl_witness %.Self.frozen.db8, @SubWith.1, @SubWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.821: type = impl_witness_access %SubWith.lookup_impl_witness.32d, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.c58: type = pattern_type %facet_type.630 [concrete] +// CHECK:STDOUT: %T.patt.315: %pattern_type.c58 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.ff6: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int32)> [concrete] -// CHECK:STDOUT: %.Self.a5b: %facet_type.ff6 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.a28: = lookup_impl_witness %.Self.a5b, @MulWith.1, @MulWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.d19: type = impl_witness_access %MulWith.lookup_impl_witness.a28, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.cf6: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int32) where %impl.elem0.d19 = %Int32> [concrete] +// CHECK:STDOUT: %.Self.d4f: %facet_type.ff6 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.07b: = lookup_impl_witness %.Self.d4f, @MulWith.1, @MulWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.0ea: type = impl_witness_access %MulWith.lookup_impl_witness.07b, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.26b: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int32) where %impl.elem0.0ea = %Int32> [concrete] // CHECK:STDOUT: %MulWith.type.eeb: type = facet_type <@MulWith.1, @MulWith.1(%Int32)> [concrete] // CHECK:STDOUT: %MulWith.assoc_type.083: type = assoc_entity_type @MulWith.1, @MulWith.1(%Int32) [concrete] // CHECK:STDOUT: %assoc0.fc0: %MulWith.assoc_type.083 = assoc_entity element0, imports.%Core.import_ref.59c [concrete] @@ -741,16 +792,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.10: type = fn_type @Int16.Op.10 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.10: %Int16.Op.type.83af6e.10 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.337c88.1: = custom_witness (%Int32, %Int16.Op.4dca31.10), @MulWith.1, @MulWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.f68: %facet_type.cf6 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.337c88.1) [concrete] +// CHECK:STDOUT: %facet_value.9ae: %facet_type.26b = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.337c88.1) [concrete] +// CHECK:STDOUT: %.Self.frozen.be6: %facet_type.ff6 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.3fe: = complete_type_witness %facet_type.ff6 [concrete] -// CHECK:STDOUT: %.Self.as_type.646: type = facet_access_type %.Self.a5b [symbolic_self] -// CHECK:STDOUT: %pattern_type.08b: type = pattern_type %facet_type.cf6 [concrete] -// CHECK:STDOUT: %T.patt.1f7: %pattern_type.08b = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.aaf: type = facet_access_type %.Self.frozen.be6 [symbolic_self] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.4cf: = lookup_impl_witness %.Self.frozen.be6, @MulWith.1, @MulWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.167: type = impl_witness_access %MulWith.lookup_impl_witness.4cf, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.354: type = pattern_type %facet_type.26b [concrete] +// CHECK:STDOUT: %T.patt.4b7: %pattern_type.354 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.d41: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int32)> [concrete] -// CHECK:STDOUT: %.Self.d8c: %facet_type.d41 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.d3c: = lookup_impl_witness %.Self.d8c, @DivWith.1, @DivWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.282: type = impl_witness_access %DivWith.lookup_impl_witness.d3c, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.639: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int32) where %impl.elem0.282 = %Int32> [concrete] +// CHECK:STDOUT: %.Self.13f: %facet_type.d41 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.abd: = lookup_impl_witness %.Self.13f, @DivWith.1, @DivWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.1a6: type = impl_witness_access %DivWith.lookup_impl_witness.abd, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.1a8: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int32) where %impl.elem0.1a6 = %Int32> [concrete] // CHECK:STDOUT: %DivWith.type.fb1: type = facet_type <@DivWith.1, @DivWith.1(%Int32)> [concrete] // CHECK:STDOUT: %DivWith.assoc_type.725: type = assoc_entity_type @DivWith.1, @DivWith.1(%Int32) [concrete] // CHECK:STDOUT: %assoc0.2da: %DivWith.assoc_type.725 = assoc_entity element0, imports.%Core.import_ref.dee [concrete] @@ -758,16 +812,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.11: type = fn_type @Int16.Op.11 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.11: %Int16.Op.type.83af6e.11 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.3eb227.1: = custom_witness (%Int32, %Int16.Op.4dca31.11), @DivWith.1, @DivWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.6d0: %facet_type.639 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.3eb227.1) [concrete] +// CHECK:STDOUT: %facet_value.38c: %facet_type.1a8 = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.3eb227.1) [concrete] +// CHECK:STDOUT: %.Self.frozen.be1: %facet_type.d41 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.11b: = complete_type_witness %facet_type.d41 [concrete] -// CHECK:STDOUT: %.Self.as_type.30d: type = facet_access_type %.Self.d8c [symbolic_self] -// CHECK:STDOUT: %pattern_type.379: type = pattern_type %facet_type.639 [concrete] -// CHECK:STDOUT: %T.patt.2d3: %pattern_type.379 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.88a: type = facet_access_type %.Self.frozen.be1 [symbolic_self] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.385: = lookup_impl_witness %.Self.frozen.be1, @DivWith.1, @DivWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b42: type = impl_witness_access %DivWith.lookup_impl_witness.385, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.761: type = pattern_type %facet_type.1a8 [concrete] +// CHECK:STDOUT: %T.patt.f94: %pattern_type.761 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.ea8: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int32)> [concrete] -// CHECK:STDOUT: %.Self.46e: %facet_type.ea8 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.b37: = lookup_impl_witness %.Self.46e, @ModWith.1, @ModWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.32c: type = impl_witness_access %ModWith.lookup_impl_witness.b37, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.cac: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int32) where %impl.elem0.32c = %Int32> [concrete] +// CHECK:STDOUT: %.Self.008: %facet_type.ea8 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.557: = lookup_impl_witness %.Self.008, @ModWith.1, @ModWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.cdb: type = impl_witness_access %ModWith.lookup_impl_witness.557, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.c8c: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int32) where %impl.elem0.cdb = %Int32> [concrete] // CHECK:STDOUT: %ModWith.type.253: type = facet_type <@ModWith.1, @ModWith.1(%Int32)> [concrete] // CHECK:STDOUT: %ModWith.assoc_type.47d: type = assoc_entity_type @ModWith.1, @ModWith.1(%Int32) [concrete] // CHECK:STDOUT: %assoc0.45c: %ModWith.assoc_type.47d = assoc_entity element0, imports.%Core.import_ref.61a [concrete] @@ -775,77 +832,80 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.type.83af6e.12: type = fn_type @Int16.Op.12 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.12: %Int16.Op.type.83af6e.12 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.501c6d.1: = custom_witness (%Int32, %Int16.Op.4dca31.12), @ModWith.1, @ModWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.72f: %facet_type.cac = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.501c6d.1) [concrete] +// CHECK:STDOUT: %facet_value.68d: %facet_type.c8c = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.501c6d.1) [concrete] +// CHECK:STDOUT: %.Self.frozen.4b6: %facet_type.ea8 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.2aa: = complete_type_witness %facet_type.ea8 [concrete] -// CHECK:STDOUT: %.Self.as_type.7e4: type = facet_access_type %.Self.46e [symbolic_self] -// CHECK:STDOUT: %pattern_type.e4f: type = pattern_type %facet_type.cac [concrete] -// CHECK:STDOUT: %T.patt.786: %pattern_type.e4f = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %facet_type.2c6: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int16) where %impl.elem0.7e0 = %Int32> [concrete] +// CHECK:STDOUT: %.Self.frozen.as_type.080: type = facet_access_type %.Self.frozen.4b6 [symbolic_self] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.fe2: = lookup_impl_witness %.Self.frozen.4b6, @ModWith.1, @ModWith.1(%Int32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e60: type = impl_witness_access %ModWith.lookup_impl_witness.fe2, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.c9a: type = pattern_type %facet_type.c8c [concrete] +// CHECK:STDOUT: %T.patt.b4d: %pattern_type.c9a = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_type.37e: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int16) where %impl.elem0.28c = %Int32> [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.2: type = fn_type @Int32.Op.2 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.2: %Int32.Op.type.83af6e.2 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.15f: = custom_witness (%Int32, %Int32.Op.4dca31.2), @AddWith.1, @AddWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.aa2: %facet_type.2c6 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.15f) [concrete] -// CHECK:STDOUT: %pattern_type.96f: type = pattern_type %facet_type.2c6 [concrete] -// CHECK:STDOUT: %T.patt.bd3: %pattern_type.96f = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_value.6ea: %facet_type.37e = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.15f) [concrete] +// CHECK:STDOUT: %pattern_type.363: type = pattern_type %facet_type.37e [concrete] +// CHECK:STDOUT: %T.patt.ccd: %pattern_type.363 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %x.param_patt.27c: %pattern_type.8b4 = value_param_pattern [concrete] // CHECK:STDOUT: %x.patt.4c9: %pattern_type.8b4 = at_binding_pattern x, %x.param_patt.27c [concrete] -// CHECK:STDOUT: %facet_type.076: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int16) where %impl.elem0.104 = %Int32> [concrete] +// CHECK:STDOUT: %facet_type.983: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int16) where %impl.elem0.4a0 = %Int32> [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.3: type = fn_type @Int32.Op.3 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.3: %Int32.Op.type.83af6e.3 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.bb4: = custom_witness (%Int32, %Int32.Op.4dca31.3), @SubWith.1, @SubWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.577: %facet_type.076 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.bb4) [concrete] -// CHECK:STDOUT: %pattern_type.05c: type = pattern_type %facet_type.076 [concrete] -// CHECK:STDOUT: %T.patt.f98: %pattern_type.05c = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %facet_type.163: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int16) where %impl.elem0.472 = %Int32> [concrete] +// CHECK:STDOUT: %facet_value.bcc: %facet_type.983 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.bb4) [concrete] +// CHECK:STDOUT: %pattern_type.af3: type = pattern_type %facet_type.983 [concrete] +// CHECK:STDOUT: %T.patt.14c: %pattern_type.af3 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_type.f48: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int16) where %impl.elem0.8de = %Int32> [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.4: type = fn_type @Int32.Op.4 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.4: %Int32.Op.type.83af6e.4 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.0ab: = custom_witness (%Int32, %Int32.Op.4dca31.4), @MulWith.1, @MulWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.0f9: %facet_type.163 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.0ab) [concrete] -// CHECK:STDOUT: %pattern_type.59d: type = pattern_type %facet_type.163 [concrete] -// CHECK:STDOUT: %T.patt.e40: %pattern_type.59d = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %facet_type.f1f: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int16) where %impl.elem0.6aa = %Int32> [concrete] +// CHECK:STDOUT: %facet_value.795: %facet_type.f48 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.0ab) [concrete] +// CHECK:STDOUT: %pattern_type.02f: type = pattern_type %facet_type.f48 [concrete] +// CHECK:STDOUT: %T.patt.a9e: %pattern_type.02f = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_type.50d: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int16) where %impl.elem0.36a = %Int32> [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.5: type = fn_type @Int32.Op.5 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.5: %Int32.Op.type.83af6e.5 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.3ec: = custom_witness (%Int32, %Int32.Op.4dca31.5), @DivWith.1, @DivWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.53b: %facet_type.f1f = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.3ec) [concrete] -// CHECK:STDOUT: %pattern_type.c6c: type = pattern_type %facet_type.f1f [concrete] -// CHECK:STDOUT: %T.patt.361: %pattern_type.c6c = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %facet_type.3eb: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int16) where %impl.elem0.dae = %Int32> [concrete] +// CHECK:STDOUT: %facet_value.c8d: %facet_type.50d = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.3ec) [concrete] +// CHECK:STDOUT: %pattern_type.9af: type = pattern_type %facet_type.50d [concrete] +// CHECK:STDOUT: %T.patt.dfa: %pattern_type.9af = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_type.b37: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int16) where %impl.elem0.436 = %Int32> [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.6: type = fn_type @Int32.Op.6 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.6: %Int32.Op.type.83af6e.6 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.de0: = custom_witness (%Int32, %Int32.Op.4dca31.6), @ModWith.1, @ModWith.1(%Int16) [concrete] -// CHECK:STDOUT: %facet_value.b75a: %facet_type.3eb = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.de0) [concrete] -// CHECK:STDOUT: %pattern_type.205: type = pattern_type %facet_type.3eb [concrete] -// CHECK:STDOUT: %T.patt.1df: %pattern_type.205 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_value.da8: %facet_type.b37 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.de0) [concrete] +// CHECK:STDOUT: %pattern_type.448: type = pattern_type %facet_type.b37 [concrete] +// CHECK:STDOUT: %T.patt.528: %pattern_type.448 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %Int32.Op.type.83af6e.7: type = fn_type @Int32.Op.7 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.7: %Int32.Op.type.83af6e.7 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.e02e0c.2: = custom_witness (%Int32, %Int32.Op.4dca31.7), @AddWith.1, @AddWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.8ac: %facet_type.cf0 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.e02e0c.2) [concrete] +// CHECK:STDOUT: %facet_value.f1a: %facet_type.ecf = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.e02e0c.2) [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.8: type = fn_type @Int32.Op.8 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.8: %Int32.Op.type.83af6e.8 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.4dea15.2: = custom_witness (%Int32, %Int32.Op.4dca31.8), @SubWith.1, @SubWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.e83: %facet_type.0f8 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.4dea15.2) [concrete] +// CHECK:STDOUT: %facet_value.6fc: %facet_type.630 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.4dea15.2) [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.9: type = fn_type @Int32.Op.9 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.9: %Int32.Op.type.83af6e.9 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.337c88.2: = custom_witness (%Int32, %Int32.Op.4dca31.9), @MulWith.1, @MulWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.4a1: %facet_type.cf6 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.337c88.2) [concrete] +// CHECK:STDOUT: %facet_value.c80: %facet_type.26b = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.337c88.2) [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.10: type = fn_type @Int32.Op.10 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.10: %Int32.Op.type.83af6e.10 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.3eb227.2: = custom_witness (%Int32, %Int32.Op.4dca31.10), @DivWith.1, @DivWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.0bb: %facet_type.639 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.3eb227.2) [concrete] +// CHECK:STDOUT: %facet_value.b2c: %facet_type.1a8 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.3eb227.2) [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.11: type = fn_type @Int32.Op.11 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.11: %Int32.Op.type.83af6e.11 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.501c6d.2: = custom_witness (%Int32, %Int32.Op.4dca31.11), @ModWith.1, @ModWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.081: %facet_type.cac = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.501c6d.2) [concrete] +// CHECK:STDOUT: %facet_value.7ec: %facet_type.c8c = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.501c6d.2) [concrete] // CHECK:STDOUT: %Int64.Op.type.83af6e.1: type = fn_type @Int64.Op.1 [concrete] // CHECK:STDOUT: %Int64.Op.4dca31.1: %Int64.Op.type.83af6e.1 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.e7a31c.3: = custom_witness (%Int64.Op.4dca31.1), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.191: %Destroy.type = facet_value %Int64, (%custom_witness.e7a31c.3) [concrete] // CHECK:STDOUT: %facet_type.afd1: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int64)> [concrete] -// CHECK:STDOUT: %.Self.52f: %facet_type.afd1 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.dd9: = lookup_impl_witness %.Self.52f, @AddWith.1, @AddWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.325: type = impl_witness_access %AddWith.lookup_impl_witness.dd9, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.466: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int64) where %impl.elem0.325 = %Int64> [concrete] +// CHECK:STDOUT: %.Self.d7b: %facet_type.afd1 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.085: = lookup_impl_witness %.Self.d7b, @AddWith.1, @AddWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.7e8: type = impl_witness_access %AddWith.lookup_impl_witness.085, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.522: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int64) where %impl.elem0.7e8 = %Int64> [concrete] // CHECK:STDOUT: %y.param_patt.a08: %pattern_type.4aa = value_param_pattern [concrete] // CHECK:STDOUT: %y.patt.63b: %pattern_type.4aa = at_binding_pattern y, %y.param_patt.a08 [concrete] // CHECK:STDOUT: %AddWith.type.b5b: type = facet_type <@AddWith.1, @AddWith.1(%Int64)> [concrete] @@ -855,18 +915,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.6: type = fn_type @Op.6 [concrete] // CHECK:STDOUT: %Op.72717c.6: %Op.type.442b68.6 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.68d: = custom_witness (%Int64, %Op.72717c.6), @AddWith.1, @AddWith.1(%Int64) [concrete] -// CHECK:STDOUT: %facet_value.aa8: %facet_type.466 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.68d) [concrete] +// CHECK:STDOUT: %facet_value.178: %facet_type.522 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.68d) [concrete] +// CHECK:STDOUT: %.Self.frozen.2e1: %facet_type.afd1 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.412: = complete_type_witness %facet_type.afd1 [concrete] -// CHECK:STDOUT: %.Self.as_type.7a8: type = facet_access_type %.Self.52f [symbolic_self] -// CHECK:STDOUT: %pattern_type.a1a: type = pattern_type %facet_type.466 [concrete] -// CHECK:STDOUT: %T.patt.7de: %pattern_type.a1a = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.d9c: type = facet_access_type %.Self.frozen.2e1 [symbolic_self] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.bc7: = lookup_impl_witness %.Self.frozen.2e1, @AddWith.1, @AddWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a41: type = impl_witness_access %AddWith.lookup_impl_witness.bc7, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.613: type = pattern_type %facet_type.522 [concrete] +// CHECK:STDOUT: %T.patt.f5c: %pattern_type.613 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %result.param_patt.1e1: %pattern_type.4aa = value_param_pattern [concrete] // CHECK:STDOUT: %result.patt.41f: %pattern_type.4aa = at_binding_pattern result, %result.param_patt.1e1 [concrete] // CHECK:STDOUT: %facet_type.502: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int64)> [concrete] -// CHECK:STDOUT: %.Self.26a: %facet_type.502 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.61b: = lookup_impl_witness %.Self.26a, @SubWith.1, @SubWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.80a: type = impl_witness_access %SubWith.lookup_impl_witness.61b, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.b42: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int64) where %impl.elem0.80a = %Int64> [concrete] +// CHECK:STDOUT: %.Self.074: %facet_type.502 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.0c4: = lookup_impl_witness %.Self.074, @SubWith.1, @SubWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.68d: type = impl_witness_access %SubWith.lookup_impl_witness.0c4, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.e5e: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int64) where %impl.elem0.68d = %Int64> [concrete] // CHECK:STDOUT: %SubWith.type.a46: type = facet_type <@SubWith.1, @SubWith.1(%Int64)> [concrete] // CHECK:STDOUT: %SubWith.assoc_type.e16: type = assoc_entity_type @SubWith.1, @SubWith.1(%Int64) [concrete] // CHECK:STDOUT: %assoc0.88a: %SubWith.assoc_type.e16 = assoc_entity element0, imports.%Core.import_ref.190e [concrete] @@ -874,16 +937,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.7: type = fn_type @Op.7 [concrete] // CHECK:STDOUT: %Op.72717c.7: %Op.type.442b68.7 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.1fa: = custom_witness (%Int64, %Op.72717c.7), @SubWith.1, @SubWith.1(%Int64) [concrete] -// CHECK:STDOUT: %facet_value.f7c: %facet_type.b42 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.1fa) [concrete] +// CHECK:STDOUT: %facet_value.c78: %facet_type.e5e = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.1fa) [concrete] +// CHECK:STDOUT: %.Self.frozen.da7: %facet_type.502 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.181: = complete_type_witness %facet_type.502 [concrete] -// CHECK:STDOUT: %.Self.as_type.5b8: type = facet_access_type %.Self.26a [symbolic_self] -// CHECK:STDOUT: %pattern_type.84a: type = pattern_type %facet_type.b42 [concrete] -// CHECK:STDOUT: %T.patt.726: %pattern_type.84a = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.436: type = facet_access_type %.Self.frozen.da7 [symbolic_self] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.362: = lookup_impl_witness %.Self.frozen.da7, @SubWith.1, @SubWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f3a: type = impl_witness_access %SubWith.lookup_impl_witness.362, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.41a: type = pattern_type %facet_type.e5e [concrete] +// CHECK:STDOUT: %T.patt.282: %pattern_type.41a = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.770: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int64)> [concrete] -// CHECK:STDOUT: %.Self.700: %facet_type.770 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.6cf: = lookup_impl_witness %.Self.700, @MulWith.1, @MulWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.aad: type = impl_witness_access %MulWith.lookup_impl_witness.6cf, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.5ef: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int64) where %impl.elem0.aad = %Int64> [concrete] +// CHECK:STDOUT: %.Self.4e1: %facet_type.770 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.55a: = lookup_impl_witness %.Self.4e1, @MulWith.1, @MulWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.641: type = impl_witness_access %MulWith.lookup_impl_witness.55a, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.9a3: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int64) where %impl.elem0.641 = %Int64> [concrete] // CHECK:STDOUT: %MulWith.type.76f: type = facet_type <@MulWith.1, @MulWith.1(%Int64)> [concrete] // CHECK:STDOUT: %MulWith.assoc_type.a37: type = assoc_entity_type @MulWith.1, @MulWith.1(%Int64) [concrete] // CHECK:STDOUT: %assoc0.210: %MulWith.assoc_type.a37 = assoc_entity element0, imports.%Core.import_ref.59c [concrete] @@ -891,16 +957,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.8: type = fn_type @Op.8 [concrete] // CHECK:STDOUT: %Op.72717c.8: %Op.type.442b68.8 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.99d: = custom_witness (%Int64, %Op.72717c.8), @MulWith.1, @MulWith.1(%Int64) [concrete] -// CHECK:STDOUT: %facet_value.4d0: %facet_type.5ef = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.99d) [concrete] +// CHECK:STDOUT: %facet_value.34a: %facet_type.9a3 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.99d) [concrete] +// CHECK:STDOUT: %.Self.frozen.f85: %facet_type.770 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.16e: = complete_type_witness %facet_type.770 [concrete] -// CHECK:STDOUT: %.Self.as_type.356: type = facet_access_type %.Self.700 [symbolic_self] -// CHECK:STDOUT: %pattern_type.1fe: type = pattern_type %facet_type.5ef [concrete] -// CHECK:STDOUT: %T.patt.cb4: %pattern_type.1fe = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.f77: type = facet_access_type %.Self.frozen.f85 [symbolic_self] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.472: = lookup_impl_witness %.Self.frozen.f85, @MulWith.1, @MulWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.c8c: type = impl_witness_access %MulWith.lookup_impl_witness.472, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.346: type = pattern_type %facet_type.9a3 [concrete] +// CHECK:STDOUT: %T.patt.6f8: %pattern_type.346 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.c98: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int64)> [concrete] -// CHECK:STDOUT: %.Self.837: %facet_type.c98 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.7a8: = lookup_impl_witness %.Self.837, @DivWith.1, @DivWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.a9d: type = impl_witness_access %DivWith.lookup_impl_witness.7a8, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.be3: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int64) where %impl.elem0.a9d = %Int64> [concrete] +// CHECK:STDOUT: %.Self.f70: %facet_type.c98 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.4c3: = lookup_impl_witness %.Self.f70, @DivWith.1, @DivWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.622: type = impl_witness_access %DivWith.lookup_impl_witness.4c3, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.641: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int64) where %impl.elem0.622 = %Int64> [concrete] // CHECK:STDOUT: %DivWith.type.095: type = facet_type <@DivWith.1, @DivWith.1(%Int64)> [concrete] // CHECK:STDOUT: %DivWith.assoc_type.8a4: type = assoc_entity_type @DivWith.1, @DivWith.1(%Int64) [concrete] // CHECK:STDOUT: %assoc0.982: %DivWith.assoc_type.8a4 = assoc_entity element0, imports.%Core.import_ref.dee [concrete] @@ -908,16 +977,19 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.9: type = fn_type @Op.9 [concrete] // CHECK:STDOUT: %Op.72717c.9: %Op.type.442b68.9 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.a8f: = custom_witness (%Int64, %Op.72717c.9), @DivWith.1, @DivWith.1(%Int64) [concrete] -// CHECK:STDOUT: %facet_value.7d4: %facet_type.be3 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.a8f) [concrete] +// CHECK:STDOUT: %facet_value.dd9: %facet_type.641 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.a8f) [concrete] +// CHECK:STDOUT: %.Self.frozen.8cb: %facet_type.c98 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.621: = complete_type_witness %facet_type.c98 [concrete] -// CHECK:STDOUT: %.Self.as_type.6a2: type = facet_access_type %.Self.837 [symbolic_self] -// CHECK:STDOUT: %pattern_type.2d9: type = pattern_type %facet_type.be3 [concrete] -// CHECK:STDOUT: %T.patt.219: %pattern_type.2d9 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.bdb: type = facet_access_type %.Self.frozen.8cb [symbolic_self] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.a82: = lookup_impl_witness %.Self.frozen.8cb, @DivWith.1, @DivWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.709: type = impl_witness_access %DivWith.lookup_impl_witness.a82, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.719: type = pattern_type %facet_type.641 [concrete] +// CHECK:STDOUT: %T.patt.e0b: %pattern_type.719 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.f26: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int64)> [concrete] -// CHECK:STDOUT: %.Self.767: %facet_type.f26 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.e0f: = lookup_impl_witness %.Self.767, @ModWith.1, @ModWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.5f0: type = impl_witness_access %ModWith.lookup_impl_witness.e0f, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.74d: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int64) where %impl.elem0.5f0 = %Int64> [concrete] +// CHECK:STDOUT: %.Self.494: %facet_type.f26 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.103: = lookup_impl_witness %.Self.494, @ModWith.1, @ModWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.ffb: type = impl_witness_access %ModWith.lookup_impl_witness.103, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.096: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int64) where %impl.elem0.ffb = %Int64> [concrete] // CHECK:STDOUT: %ModWith.type.204: type = facet_type <@ModWith.1, @ModWith.1(%Int64)> [concrete] // CHECK:STDOUT: %ModWith.assoc_type.1f7: type = assoc_entity_type @ModWith.1, @ModWith.1(%Int64) [concrete] // CHECK:STDOUT: %assoc0.0a6: %ModWith.assoc_type.1f7 = assoc_entity element0, imports.%Core.import_ref.61a [concrete] @@ -925,48 +997,51 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Op.type.442b68.10: type = fn_type @Op.10 [concrete] // CHECK:STDOUT: %Op.72717c.10: %Op.type.442b68.10 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.972: = custom_witness (%Int64, %Op.72717c.10), @ModWith.1, @ModWith.1(%Int64) [concrete] -// CHECK:STDOUT: %facet_value.774: %facet_type.74d = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.972) [concrete] +// CHECK:STDOUT: %facet_value.ea3: %facet_type.096 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.972) [concrete] +// CHECK:STDOUT: %.Self.frozen.ac6: %facet_type.f26 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %complete_type.359: = complete_type_witness %facet_type.f26 [concrete] -// CHECK:STDOUT: %.Self.as_type.1a7: type = facet_access_type %.Self.767 [symbolic_self] -// CHECK:STDOUT: %pattern_type.41c: type = pattern_type %facet_type.74d [concrete] -// CHECK:STDOUT: %T.patt.078: %pattern_type.41c = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %facet_type.fdd: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int32) where %impl.elem0.899 = %Int64> [concrete] +// CHECK:STDOUT: %.Self.frozen.as_type.17a: type = facet_access_type %.Self.frozen.ac6 [symbolic_self] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.072: = lookup_impl_witness %.Self.frozen.ac6, @ModWith.1, @ModWith.1(%Int64) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.220: type = impl_witness_access %ModWith.lookup_impl_witness.072, element0 [symbolic_self] +// CHECK:STDOUT: %pattern_type.df3: type = pattern_type %facet_type.096 [concrete] +// CHECK:STDOUT: %T.patt.c87: %pattern_type.df3 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_type.840: type = facet_type <@Destroy & @AddWith.1, @AddWith.1(%Int32) where %impl.elem0.6e6 = %Int64> [concrete] // CHECK:STDOUT: %Op.type.442b68.11: type = fn_type @Op.11 [concrete] // CHECK:STDOUT: %Op.72717c.11: %Op.type.442b68.11 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.98f: = custom_witness (%Int64, %Op.72717c.11), @AddWith.1, @AddWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.7d0: %facet_type.fdd = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.98f) [concrete] -// CHECK:STDOUT: %pattern_type.5b4: type = pattern_type %facet_type.fdd [concrete] -// CHECK:STDOUT: %T.patt.688: %pattern_type.5b4 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_value.393: %facet_type.840 = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.98f) [concrete] +// CHECK:STDOUT: %pattern_type.46d: type = pattern_type %facet_type.840 [concrete] +// CHECK:STDOUT: %T.patt.211: %pattern_type.46d = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %x.param_patt.e68: %pattern_type.4aa = value_param_pattern [concrete] // CHECK:STDOUT: %x.patt.52a: %pattern_type.4aa = at_binding_pattern x, %x.param_patt.e68 [concrete] -// CHECK:STDOUT: %facet_type.2c4: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int32) where %impl.elem0.ee1 = %Int64> [concrete] +// CHECK:STDOUT: %facet_type.99d: type = facet_type <@Destroy & @SubWith.1, @SubWith.1(%Int32) where %impl.elem0.e31 = %Int64> [concrete] // CHECK:STDOUT: %Op.type.442b68.12: type = fn_type @Op.12 [concrete] // CHECK:STDOUT: %Op.72717c.12: %Op.type.442b68.12 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.5c3: = custom_witness (%Int64, %Op.72717c.12), @SubWith.1, @SubWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.51b: %facet_type.2c4 = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.5c3) [concrete] -// CHECK:STDOUT: %pattern_type.515: type = pattern_type %facet_type.2c4 [concrete] -// CHECK:STDOUT: %T.patt.080: %pattern_type.515 = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %facet_type.99c: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int32) where %impl.elem0.d19 = %Int64> [concrete] +// CHECK:STDOUT: %facet_value.e02: %facet_type.99d = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.5c3) [concrete] +// CHECK:STDOUT: %pattern_type.b19: type = pattern_type %facet_type.99d [concrete] +// CHECK:STDOUT: %T.patt.e50: %pattern_type.b19 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_type.5e8: type = facet_type <@Destroy & @MulWith.1, @MulWith.1(%Int32) where %impl.elem0.0ea = %Int64> [concrete] // CHECK:STDOUT: %Op.type.442b68.13: type = fn_type @Op.13 [concrete] // CHECK:STDOUT: %Op.72717c.13: %Op.type.442b68.13 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.ac0: = custom_witness (%Int64, %Op.72717c.13), @MulWith.1, @MulWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.738: %facet_type.99c = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.ac0) [concrete] -// CHECK:STDOUT: %pattern_type.bb6: type = pattern_type %facet_type.99c [concrete] -// CHECK:STDOUT: %T.patt.03e: %pattern_type.bb6 = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %facet_type.7ce: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int32) where %impl.elem0.282 = %Int64> [concrete] +// CHECK:STDOUT: %facet_value.dda: %facet_type.5e8 = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.ac0) [concrete] +// CHECK:STDOUT: %pattern_type.d24: type = pattern_type %facet_type.5e8 [concrete] +// CHECK:STDOUT: %T.patt.54a: %pattern_type.d24 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_type.97b: type = facet_type <@Destroy & @DivWith.1, @DivWith.1(%Int32) where %impl.elem0.1a6 = %Int64> [concrete] // CHECK:STDOUT: %Op.type.442b68.14: type = fn_type @Op.14 [concrete] // CHECK:STDOUT: %Op.72717c.14: %Op.type.442b68.14 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.c98: = custom_witness (%Int64, %Op.72717c.14), @DivWith.1, @DivWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.c2b: %facet_type.7ce = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.c98) [concrete] -// CHECK:STDOUT: %pattern_type.59a: type = pattern_type %facet_type.7ce [concrete] -// CHECK:STDOUT: %T.patt.161: %pattern_type.59a = symbolic_binding_pattern T, 2 [symbolic] -// CHECK:STDOUT: %facet_type.c2e: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int32) where %impl.elem0.32c = %Int64> [concrete] +// CHECK:STDOUT: %facet_value.886: %facet_type.97b = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.c98) [concrete] +// CHECK:STDOUT: %pattern_type.6b7: type = pattern_type %facet_type.97b [concrete] +// CHECK:STDOUT: %T.patt.0b0: %pattern_type.6b7 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_type.546: type = facet_type <@Destroy & @ModWith.1, @ModWith.1(%Int32) where %impl.elem0.cdb = %Int64> [concrete] // CHECK:STDOUT: %Op.type.442b68.15: type = fn_type @Op.15 [concrete] // CHECK:STDOUT: %Op.72717c.15: %Op.type.442b68.15 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.e66: = custom_witness (%Int64, %Op.72717c.15), @ModWith.1, @ModWith.1(%Int32) [concrete] -// CHECK:STDOUT: %facet_value.606: %facet_type.c2e = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.e66) [concrete] -// CHECK:STDOUT: %pattern_type.af40: type = pattern_type %facet_type.c2e [concrete] -// CHECK:STDOUT: %T.patt.cb9: %pattern_type.af40 = symbolic_binding_pattern T, 2 [symbolic] +// CHECK:STDOUT: %facet_value.20a: %facet_type.546 = facet_value %Int64, (%custom_witness.e7a31c.3, %custom_witness.e66) [concrete] +// CHECK:STDOUT: %pattern_type.5db: type = pattern_type %facet_type.546 [concrete] +// CHECK:STDOUT: %T.patt.ed0: %pattern_type.5db = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.c2c: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.191) [concrete] // CHECK:STDOUT: %.c2e: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.c2c, %Destroy.facet.191 [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.b76: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.099) [concrete] @@ -1124,8 +1199,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int16.Op.4dca31.16: %Int16.Op.type.83af6e.16 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.91d: = custom_witness (%Int16.Op.4dca31.16), @DivAssignWith.1, @DivAssignWith.1(%i16) [concrete] // CHECK:STDOUT: %DivAssignWith.facet.a72: %DivAssignWith.type.081 = facet_value %Int16, (%custom_witness.91d) [concrete] -// CHECK:STDOUT: %pattern_type.c97: type = pattern_type %DivAssignWith.type.081 [concrete] -// CHECK:STDOUT: %T.patt.35e: %pattern_type.c97 = symbolic_binding_pattern T, 1 [symbolic] +// CHECK:STDOUT: %pattern_type.c970: type = pattern_type %DivAssignWith.type.081 [concrete] +// CHECK:STDOUT: %T.patt.35e: %pattern_type.c970 = symbolic_binding_pattern T, 1 [symbolic] // CHECK:STDOUT: %ModAssignWith.type.1ea: type = facet_type <@ModAssignWith.1, @ModAssignWith.1(%i16)> [concrete] // CHECK:STDOUT: %ModAssignWith.assoc_type.91d: type = assoc_entity_type @ModAssignWith.1, @ModAssignWith.1(%i16) [concrete] // CHECK:STDOUT: %assoc0.b7f: %ModAssignWith.assoc_type.91d = assoc_entity element0, imports.%Core.import_ref.cf6 [concrete] @@ -1232,25 +1307,25 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.539: = specific_impl_function %impl.elem0.950, @Dec.WithSelf.Op(%T.e8e) [symbolic] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %facet_type.68f: type = facet_type <@Destroy & @Negate> [concrete] -// CHECK:STDOUT: %.Self.69b: %facet_type.68f = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Negate.lookup_impl_witness.159: = lookup_impl_witness %.Self.69b, @Negate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.f9d: type = impl_witness_access %Negate.lookup_impl_witness.159, element0 [symbolic_self] -// CHECK:STDOUT: %facet_type.b1d: type = facet_type <@Destroy & @Negate where %impl.elem0.f9d = %Result.as_type> [symbolic] -// CHECK:STDOUT: %pattern_type.540: type = pattern_type %facet_type.b1d [symbolic] -// CHECK:STDOUT: %T.patt.e96: %pattern_type.540 = symbolic_binding_pattern T, 1 [symbolic] -// CHECK:STDOUT: %T.a9d: %facet_type.b1d = symbolic_binding T, 1 [symbolic] +// CHECK:STDOUT: %.Self.718: %facet_type.68f = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Negate.lookup_impl_witness.cdc: = lookup_impl_witness %.Self.718, @Negate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e29: type = impl_witness_access %Negate.lookup_impl_witness.cdc, element0 [symbolic_self] +// CHECK:STDOUT: %facet_type.352: type = facet_type <@Destroy & @Negate where %impl.elem0.e29 = %Result.as_type> [symbolic] +// CHECK:STDOUT: %pattern_type.4c2: type = pattern_type %facet_type.352 [symbolic] +// CHECK:STDOUT: %T.patt.c5b: %pattern_type.4c2 = symbolic_binding_pattern T, 1 [symbolic] +// CHECK:STDOUT: %T.e01: %facet_type.352 = symbolic_binding T, 1 [symbolic] // CHECK:STDOUT: %y.param_patt.023: %pattern_type.f4e485.2 = value_param_pattern [symbolic] // CHECK:STDOUT: %y.patt.053: %pattern_type.f4e485.2 = at_binding_pattern y, %y.param_patt.023 [symbolic] -// CHECK:STDOUT: %T.as_type.a98: type = facet_access_type %T.a9d [symbolic] -// CHECK:STDOUT: %pattern_type.962a: type = pattern_type %T.as_type.a98 [symbolic] -// CHECK:STDOUT: %x.param_patt.4f4: %pattern_type.962a = value_param_pattern [symbolic] -// CHECK:STDOUT: %x.patt.31e: %pattern_type.962a = at_binding_pattern x, %x.param_patt.4f4 [symbolic] -// CHECK:STDOUT: %Negate.lookup_impl_witness.48a: = lookup_impl_witness %T.a9d, @Negate [symbolic] -// CHECK:STDOUT: %Negate.facet.f2f: %Negate.type = facet_value %T.as_type.a98, (%Negate.lookup_impl_witness.48a) [symbolic] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.803: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet.f2f) [symbolic] -// CHECK:STDOUT: %.c6c: type = fn_type_with_self_type %Negate.WithSelf.Op.type.803, %Negate.facet.f2f [symbolic] -// CHECK:STDOUT: %impl.elem1.9a8: %.c6c = impl_witness_access %Negate.lookup_impl_witness.48a, element1 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.c5a: = specific_impl_function %impl.elem1.9a8, @Negate.WithSelf.Op(%Negate.facet.f2f) [symbolic] +// CHECK:STDOUT: %T.as_type.684: type = facet_access_type %T.e01 [symbolic] +// CHECK:STDOUT: %pattern_type.2dd: type = pattern_type %T.as_type.684 [symbolic] +// CHECK:STDOUT: %x.param_patt.cbc: %pattern_type.2dd = value_param_pattern [symbolic] +// CHECK:STDOUT: %x.patt.7fb: %pattern_type.2dd = at_binding_pattern x, %x.param_patt.cbc [symbolic] +// CHECK:STDOUT: %Negate.lookup_impl_witness.218: = lookup_impl_witness %T.e01, @Negate [symbolic] +// CHECK:STDOUT: %Negate.facet.5e5: %Negate.type = facet_value %T.as_type.684, (%Negate.lookup_impl_witness.218) [symbolic] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.d8a: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet.5e5) [symbolic] +// CHECK:STDOUT: %.16a: type = fn_type_with_self_type %Negate.WithSelf.Op.type.d8a, %Negate.facet.5e5 [symbolic] +// CHECK:STDOUT: %impl.elem1.ee9: %.16a = impl_witness_access %Negate.lookup_impl_witness.218, element1 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.923: = specific_impl_function %impl.elem1.ee9, @Negate.WithSelf.Op(%Negate.facet.5e5) [symbolic] // CHECK:STDOUT: %Int32.Op.type.83af6e.18: type = fn_type @Int32.Op.18 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.18: %Int32.Op.type.83af6e.18 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.f3f: = custom_witness (%Int32.Op.4dca31.18), @Inc [concrete] @@ -1259,20 +1334,20 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Int32.Op.4dca31.19: %Int32.Op.type.83af6e.19 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.b24: = custom_witness (%Int32.Op.4dca31.19), @Dec [concrete] // CHECK:STDOUT: %Dec.facet.e1b: %Dec.type = facet_value %Int32, (%custom_witness.b24) [concrete] -// CHECK:STDOUT: %facet_type.76b: type = facet_type <@Destroy & @Negate where %impl.elem0.f9d = %Int64> [concrete] +// CHECK:STDOUT: %facet_type.d8c: type = facet_type <@Destroy & @Negate where %impl.elem0.e29 = %Int64> [concrete] // CHECK:STDOUT: %Int16.Op.type.83af6e.18: type = fn_type @Int16.Op.18 [concrete] // CHECK:STDOUT: %Int16.Op.4dca31.18: %Int16.Op.type.83af6e.18 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.100: = custom_witness (%Int64, %Int16.Op.4dca31.18), @Negate [concrete] -// CHECK:STDOUT: %facet_value.750: %facet_type.76b = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.100) [concrete] -// CHECK:STDOUT: %pattern_type.61c: type = pattern_type %facet_type.76b [concrete] -// CHECK:STDOUT: %T.patt.fd6: %pattern_type.61c = symbolic_binding_pattern T, 1 [symbolic] -// CHECK:STDOUT: %facet_type.49d: type = facet_type <@Destroy & @Negate where %impl.elem0.f9d = %Int32> [concrete] +// CHECK:STDOUT: %facet_value.9cc: %facet_type.d8c = facet_value %Int16, (%custom_witness.e7a31c.1, %custom_witness.100) [concrete] +// CHECK:STDOUT: %pattern_type.54c: type = pattern_type %facet_type.d8c [concrete] +// CHECK:STDOUT: %T.patt.16f: %pattern_type.54c = symbolic_binding_pattern T, 1 [symbolic] +// CHECK:STDOUT: %facet_type.021: type = facet_type <@Destroy & @Negate where %impl.elem0.e29 = %Int32> [concrete] // CHECK:STDOUT: %Int32.Op.type.83af6e.20: type = fn_type @Int32.Op.20 [concrete] // CHECK:STDOUT: %Int32.Op.4dca31.20: %Int32.Op.type.83af6e.20 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.a85: = custom_witness (%Int32, %Int32.Op.4dca31.20), @Negate [concrete] -// CHECK:STDOUT: %facet_value.42d: %facet_type.49d = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.a85) [concrete] -// CHECK:STDOUT: %pattern_type.57c: type = pattern_type %facet_type.49d [concrete] -// CHECK:STDOUT: %T.patt.4fa: %pattern_type.57c = symbolic_binding_pattern T, 1 [symbolic] +// CHECK:STDOUT: %facet_value.dcd: %facet_type.021 = facet_value %Int32, (%custom_witness.e7a31c.2, %custom_witness.a85) [concrete] +// CHECK:STDOUT: %pattern_type.4cd: type = pattern_type %facet_type.021 [concrete] +// CHECK:STDOUT: %T.patt.d74: %pattern_type.4cd = symbolic_binding_pattern T, 1 [symbolic] // CHECK:STDOUT: %complete_type.7a6: = complete_type_witness %AddWith.type.b62 [concrete] // CHECK:STDOUT: %AddWith.facet.ff0: %AddWith.type.b62 = facet_value %i16, (%custom_witness.248) [concrete] // CHECK:STDOUT: %AddWith.WithSelf.Op.type.e1f: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%Int16, %AddWith.facet.ff0) [concrete] @@ -1456,7 +1531,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Core.import_ref.91f8: type = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [concrete = %Result.9a4] // CHECK:STDOUT: %Result.9a4: type = assoc_const_decl @Result.1 [concrete] {} // CHECK:STDOUT: %Core.import_ref.9768 = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.0f3: @SubWith.WithSelf.%SubWith.assoc_type (%SubWith.assoc_type.b0b) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @SubWith.WithSelf.%assoc1 (constants.%assoc1.178)] +// CHECK:STDOUT: %Core.import_ref.0f33: @SubWith.WithSelf.%SubWith.assoc_type (%SubWith.assoc_type.b0b) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @SubWith.WithSelf.%assoc1 (constants.%assoc1.178)] // CHECK:STDOUT: %Core.import_ref.3a4: @SubWith.WithSelf.%SubWith.WithSelf.Op.type (%SubWith.WithSelf.Op.type.68d) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @SubWith.WithSelf.%SubWith.WithSelf.Op (constants.%SubWith.WithSelf.Op.97a)] // CHECK:STDOUT: %Core.import_ref.190e: type = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [concrete = %Result.7bd] // CHECK:STDOUT: %Result.7bd: type = assoc_const_decl @Result.2 [concrete] {} @@ -1493,35 +1568,35 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %Core.import_ref.d29 = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @AddWith.loc124(%Result.loc121_9.2: %Destroy.type, %U.loc122_4.2: %Destroy.type, %T.loc123_4.2: @AddWith.loc124.%facet_type.loc123_38 (%facet_type.096)) { +// CHECK:STDOUT: generic fn @AddWith.loc124(%Result.loc121_9.2: %Destroy.type, %U.loc122_4.2: %Destroy.type, %T.loc123_4.2: @AddWith.loc124.%facet_type.loc123_38 (%facet_type.c2e)) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc126: = require_complete_type %AddWith.type.loc123_36.1 [symbolic = %require_complete.loc126 (constants.%require_complete.15e)] // CHECK:STDOUT: %assoc1: @AddWith.loc124.%AddWith.assoc_type (%AddWith.assoc_type.bc8) = assoc_entity element1, imports.%Core.import_ref.3cf [symbolic = %assoc1 (constants.%assoc1.13e)] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126: = lookup_impl_witness %T.loc123_4.1, @AddWith.1, @AddWith.1(%U.as_type.loc123_36.1) [symbolic = %AddWith.lookup_impl_witness.loc126 (constants.%AddWith.lookup_impl_witness.8b3)] -// CHECK:STDOUT: %AddWith.facet: @AddWith.loc124.%AddWith.type.loc123_36.1 (%AddWith.type.9da) = facet_value %T.as_type.loc124_29.1, (%AddWith.lookup_impl_witness.loc126) [symbolic = %AddWith.facet (constants.%AddWith.facet.fc9)] -// CHECK:STDOUT: %AddWith.WithSelf.Op.type: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%U.as_type.loc123_36.1, %AddWith.facet) [symbolic = %AddWith.WithSelf.Op.type (constants.%AddWith.WithSelf.Op.type.eb7)] -// CHECK:STDOUT: %.loc126_5.6: type = fn_type_with_self_type %AddWith.WithSelf.Op.type, %AddWith.facet [symbolic = %.loc126_5.6 (constants.%.012e)] -// CHECK:STDOUT: %impl.elem1.loc126_5.2: @AddWith.loc124.%.loc126_5.6 (%.012e) = impl_witness_access %AddWith.lookup_impl_witness.loc126, element1 [symbolic = %impl.elem1.loc126_5.2 (constants.%impl.elem1.0c1)] -// CHECK:STDOUT: %specific_impl_fn.loc126_5.3: = specific_impl_function %impl.elem1.loc126_5.2, @AddWith.WithSelf.Op(%U.as_type.loc123_36.1, %AddWith.facet) [symbolic = %specific_impl_fn.loc126_5.3 (constants.%specific_impl_fn.95a)] +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126: = lookup_impl_witness %T.loc123_4.1, @AddWith.1, @AddWith.1(%U.as_type.loc123_36.1) [symbolic = %AddWith.lookup_impl_witness.loc126 (constants.%AddWith.lookup_impl_witness.2b1)] +// CHECK:STDOUT: %AddWith.facet: @AddWith.loc124.%AddWith.type.loc123_36.1 (%AddWith.type.9da) = facet_value %T.as_type.loc124_29.1, (%AddWith.lookup_impl_witness.loc126) [symbolic = %AddWith.facet (constants.%AddWith.facet.fea)] +// CHECK:STDOUT: %AddWith.WithSelf.Op.type: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%U.as_type.loc123_36.1, %AddWith.facet) [symbolic = %AddWith.WithSelf.Op.type (constants.%AddWith.WithSelf.Op.type.977)] +// CHECK:STDOUT: %.loc126_5.6: type = fn_type_with_self_type %AddWith.WithSelf.Op.type, %AddWith.facet [symbolic = %.loc126_5.6 (constants.%.a30)] +// CHECK:STDOUT: %impl.elem1.loc126_5.2: @AddWith.loc124.%.loc126_5.6 (%.a30) = impl_witness_access %AddWith.lookup_impl_witness.loc126, element1 [symbolic = %impl.elem1.loc126_5.2 (constants.%impl.elem1.b05)] +// CHECK:STDOUT: %specific_impl_fn.loc126_5.3: = specific_impl_function %impl.elem1.loc126_5.2, @AddWith.WithSelf.Op(%U.as_type.loc123_36.1, %AddWith.facet) [symbolic = %specific_impl_fn.loc126_5.3 (constants.%specific_impl_fn.78d)] // CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Result.loc121_9.1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.d3ece9.2)] // CHECK:STDOUT: %.loc126_5.7: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Result.loc121_9.1 [symbolic = %.loc126_5.7 (constants.%.53a)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Result.loc121_9.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %impl.elem0.loc126_5.2: @AddWith.loc124.%.loc126_5.7 (%.53a) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc126_5.2 (constants.%impl.elem0.0f9)] // CHECK:STDOUT: %specific_impl_fn.loc126_5.4: = specific_impl_function %impl.elem0.loc126_5.2, @Destroy.WithSelf.Op(%Result.loc121_9.1) [symbolic = %specific_impl_fn.loc126_5.4 (constants.%specific_impl_fn.afc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @AddWith.loc124.%Result.as_type.loc123_54.1 (%Result.as_type), %x.param: @AddWith.loc124.%T.as_type.loc124_29.1 (%T.as_type.606), %y.param: @AddWith.loc124.%U.as_type.loc123_36.1 (%U.as_type.b61)) { +// CHECK:STDOUT: fn(%result.param: @AddWith.loc124.%Result.as_type.loc123_54.1 (%Result.as_type), %x.param: @AddWith.loc124.%T.as_type.loc124_29.1 (%T.as_type.6fc), %y.param: @AddWith.loc124.%U.as_type.loc123_36.1 (%U.as_type.b61)) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @AddWith.loc124.%T.as_type.loc124_29.1 (%T.as_type.606) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @AddWith.loc124.%T.as_type.loc124_29.1 (%T.as_type.6fc) = name_ref x, %x // CHECK:STDOUT: %y.ref: @AddWith.loc124.%U.as_type.loc123_36.1 (%U.as_type.b61) = name_ref y, %y // CHECK:STDOUT: %AddWith.type.loc126: type = facet_type <@AddWith.1, @AddWith.1(constants.%U.as_type.b61)> [symbolic = %AddWith.type.loc123_36.1 (constants.%AddWith.type.9da)] // CHECK:STDOUT: %.loc126_5.1: @AddWith.loc124.%AddWith.assoc_type (%AddWith.assoc_type.bc8) = specific_constant imports.%Core.import_ref.5a1, @AddWith.WithSelf(constants.%U.as_type.b61, constants.%Self.96a) [symbolic = %assoc1 (constants.%assoc1.13e)] // CHECK:STDOUT: %Op.ref: @AddWith.loc124.%AddWith.assoc_type (%AddWith.assoc_type.bc8) = name_ref Op, %.loc126_5.1 [symbolic = %assoc1 (constants.%assoc1.13e)] -// CHECK:STDOUT: %impl.elem1.loc126_5.1: @AddWith.loc124.%.loc126_5.6 (%.012e) = impl_witness_access constants.%AddWith.lookup_impl_witness.8b3, element1 [symbolic = %impl.elem1.loc126_5.2 (constants.%impl.elem1.0c1)] +// CHECK:STDOUT: %impl.elem1.loc126_5.1: @AddWith.loc124.%.loc126_5.6 (%.a30) = impl_witness_access constants.%AddWith.lookup_impl_witness.2b1, element1 [symbolic = %impl.elem1.loc126_5.2 (constants.%impl.elem1.b05)] // CHECK:STDOUT: %bound_method.loc126_5.1: = bound_method %x.ref, %impl.elem1.loc126_5.1 -// CHECK:STDOUT: %specific_impl_fn.loc126_5.1: = specific_impl_function %impl.elem1.loc126_5.1, @AddWith.WithSelf.Op(constants.%U.as_type.b61, constants.%AddWith.facet.fc9) [symbolic = %specific_impl_fn.loc126_5.3 (constants.%specific_impl_fn.95a)] +// CHECK:STDOUT: %specific_impl_fn.loc126_5.1: = specific_impl_function %impl.elem1.loc126_5.1, @AddWith.WithSelf.Op(constants.%U.as_type.b61, constants.%AddWith.facet.fea) [symbolic = %specific_impl_fn.loc126_5.3 (constants.%specific_impl_fn.78d)] // CHECK:STDOUT: %bound_method.loc126_5.2: = bound_method %x.ref, %specific_impl_fn.loc126_5.1 // CHECK:STDOUT: %.loc126_5.2: ref @AddWith.loc124.%Result.as_type.loc123_54.1 (%Result.as_type) = temporary_storage // CHECK:STDOUT: %AddWith.WithSelf.Op.call: init @AddWith.loc124.%Result.as_type.loc123_54.1 (%Result.as_type) to %.loc126_5.2 = call %bound_method.loc126_5.2(%x.ref, %y.ref) @@ -1539,35 +1614,35 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @SubWith.loc135(%Result.loc132_9.2: %Destroy.type, %U.loc133_4.2: %Destroy.type, %T.loc134_4.2: @SubWith.loc135.%facet_type.loc134_38 (%facet_type.5a5)) { +// CHECK:STDOUT: generic fn @SubWith.loc135(%Result.loc132_9.2: %Destroy.type, %U.loc133_4.2: %Destroy.type, %T.loc134_4.2: @SubWith.loc135.%facet_type.loc134_38 (%facet_type.eeb)) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc137: = require_complete_type %SubWith.type.loc134_36.1 [symbolic = %require_complete.loc137 (constants.%require_complete.6ff)] // CHECK:STDOUT: %assoc1: @SubWith.loc135.%SubWith.assoc_type (%SubWith.assoc_type.3a1) = assoc_entity element1, imports.%Core.import_ref.3a4 [symbolic = %assoc1 (constants.%assoc1.8fd)] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137: = lookup_impl_witness %T.loc134_4.1, @SubWith.1, @SubWith.1(%U.as_type.loc134_36.1) [symbolic = %SubWith.lookup_impl_witness.loc137 (constants.%SubWith.lookup_impl_witness.07c)] -// CHECK:STDOUT: %SubWith.facet: @SubWith.loc135.%SubWith.type.loc134_36.1 (%SubWith.type.b5d) = facet_value %T.as_type.loc135_29.1, (%SubWith.lookup_impl_witness.loc137) [symbolic = %SubWith.facet (constants.%SubWith.facet.44a)] -// CHECK:STDOUT: %SubWith.WithSelf.Op.type: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%U.as_type.loc134_36.1, %SubWith.facet) [symbolic = %SubWith.WithSelf.Op.type (constants.%SubWith.WithSelf.Op.type.1fe)] -// CHECK:STDOUT: %.loc137_5.6: type = fn_type_with_self_type %SubWith.WithSelf.Op.type, %SubWith.facet [symbolic = %.loc137_5.6 (constants.%.fa2)] -// CHECK:STDOUT: %impl.elem1.loc137_5.2: @SubWith.loc135.%.loc137_5.6 (%.fa2) = impl_witness_access %SubWith.lookup_impl_witness.loc137, element1 [symbolic = %impl.elem1.loc137_5.2 (constants.%impl.elem1.fc7)] -// CHECK:STDOUT: %specific_impl_fn.loc137_5.3: = specific_impl_function %impl.elem1.loc137_5.2, @SubWith.WithSelf.Op(%U.as_type.loc134_36.1, %SubWith.facet) [symbolic = %specific_impl_fn.loc137_5.3 (constants.%specific_impl_fn.3fc)] +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137: = lookup_impl_witness %T.loc134_4.1, @SubWith.1, @SubWith.1(%U.as_type.loc134_36.1) [symbolic = %SubWith.lookup_impl_witness.loc137 (constants.%SubWith.lookup_impl_witness.ce5)] +// CHECK:STDOUT: %SubWith.facet: @SubWith.loc135.%SubWith.type.loc134_36.1 (%SubWith.type.b5d) = facet_value %T.as_type.loc135_29.1, (%SubWith.lookup_impl_witness.loc137) [symbolic = %SubWith.facet (constants.%SubWith.facet.f6a)] +// CHECK:STDOUT: %SubWith.WithSelf.Op.type: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%U.as_type.loc134_36.1, %SubWith.facet) [symbolic = %SubWith.WithSelf.Op.type (constants.%SubWith.WithSelf.Op.type.4fe)] +// CHECK:STDOUT: %.loc137_5.6: type = fn_type_with_self_type %SubWith.WithSelf.Op.type, %SubWith.facet [symbolic = %.loc137_5.6 (constants.%.a4a)] +// CHECK:STDOUT: %impl.elem1.loc137_5.2: @SubWith.loc135.%.loc137_5.6 (%.a4a) = impl_witness_access %SubWith.lookup_impl_witness.loc137, element1 [symbolic = %impl.elem1.loc137_5.2 (constants.%impl.elem1.e4f)] +// CHECK:STDOUT: %specific_impl_fn.loc137_5.3: = specific_impl_function %impl.elem1.loc137_5.2, @SubWith.WithSelf.Op(%U.as_type.loc134_36.1, %SubWith.facet) [symbolic = %specific_impl_fn.loc137_5.3 (constants.%specific_impl_fn.46d)] // CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Result.loc132_9.1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.d3ece9.2)] // CHECK:STDOUT: %.loc137_5.7: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Result.loc132_9.1 [symbolic = %.loc137_5.7 (constants.%.53a)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Result.loc132_9.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %impl.elem0.loc137_5.2: @SubWith.loc135.%.loc137_5.7 (%.53a) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc137_5.2 (constants.%impl.elem0.0f9)] // CHECK:STDOUT: %specific_impl_fn.loc137_5.4: = specific_impl_function %impl.elem0.loc137_5.2, @Destroy.WithSelf.Op(%Result.loc132_9.1) [symbolic = %specific_impl_fn.loc137_5.4 (constants.%specific_impl_fn.afc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @SubWith.loc135.%Result.as_type.loc134_54.1 (%Result.as_type), %x.param: @SubWith.loc135.%T.as_type.loc135_29.1 (%T.as_type.b22), %y.param: @SubWith.loc135.%U.as_type.loc134_36.1 (%U.as_type.b61)) { +// CHECK:STDOUT: fn(%result.param: @SubWith.loc135.%Result.as_type.loc134_54.1 (%Result.as_type), %x.param: @SubWith.loc135.%T.as_type.loc135_29.1 (%T.as_type.58f), %y.param: @SubWith.loc135.%U.as_type.loc134_36.1 (%U.as_type.b61)) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @SubWith.loc135.%T.as_type.loc135_29.1 (%T.as_type.b22) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @SubWith.loc135.%T.as_type.loc135_29.1 (%T.as_type.58f) = name_ref x, %x // CHECK:STDOUT: %y.ref: @SubWith.loc135.%U.as_type.loc134_36.1 (%U.as_type.b61) = name_ref y, %y // CHECK:STDOUT: %SubWith.type.loc137: type = facet_type <@SubWith.1, @SubWith.1(constants.%U.as_type.b61)> [symbolic = %SubWith.type.loc134_36.1 (constants.%SubWith.type.b5d)] -// CHECK:STDOUT: %.loc137_5.1: @SubWith.loc135.%SubWith.assoc_type (%SubWith.assoc_type.3a1) = specific_constant imports.%Core.import_ref.0f3, @SubWith.WithSelf(constants.%U.as_type.b61, constants.%Self.d6b) [symbolic = %assoc1 (constants.%assoc1.8fd)] +// CHECK:STDOUT: %.loc137_5.1: @SubWith.loc135.%SubWith.assoc_type (%SubWith.assoc_type.3a1) = specific_constant imports.%Core.import_ref.0f33, @SubWith.WithSelf(constants.%U.as_type.b61, constants.%Self.d6b) [symbolic = %assoc1 (constants.%assoc1.8fd)] // CHECK:STDOUT: %Op.ref: @SubWith.loc135.%SubWith.assoc_type (%SubWith.assoc_type.3a1) = name_ref Op, %.loc137_5.1 [symbolic = %assoc1 (constants.%assoc1.8fd)] -// CHECK:STDOUT: %impl.elem1.loc137_5.1: @SubWith.loc135.%.loc137_5.6 (%.fa2) = impl_witness_access constants.%SubWith.lookup_impl_witness.07c, element1 [symbolic = %impl.elem1.loc137_5.2 (constants.%impl.elem1.fc7)] +// CHECK:STDOUT: %impl.elem1.loc137_5.1: @SubWith.loc135.%.loc137_5.6 (%.a4a) = impl_witness_access constants.%SubWith.lookup_impl_witness.ce5, element1 [symbolic = %impl.elem1.loc137_5.2 (constants.%impl.elem1.e4f)] // CHECK:STDOUT: %bound_method.loc137_5.1: = bound_method %x.ref, %impl.elem1.loc137_5.1 -// CHECK:STDOUT: %specific_impl_fn.loc137_5.1: = specific_impl_function %impl.elem1.loc137_5.1, @SubWith.WithSelf.Op(constants.%U.as_type.b61, constants.%SubWith.facet.44a) [symbolic = %specific_impl_fn.loc137_5.3 (constants.%specific_impl_fn.3fc)] +// CHECK:STDOUT: %specific_impl_fn.loc137_5.1: = specific_impl_function %impl.elem1.loc137_5.1, @SubWith.WithSelf.Op(constants.%U.as_type.b61, constants.%SubWith.facet.f6a) [symbolic = %specific_impl_fn.loc137_5.3 (constants.%specific_impl_fn.46d)] // CHECK:STDOUT: %bound_method.loc137_5.2: = bound_method %x.ref, %specific_impl_fn.loc137_5.1 // CHECK:STDOUT: %.loc137_5.2: ref @SubWith.loc135.%Result.as_type.loc134_54.1 (%Result.as_type) = temporary_storage // CHECK:STDOUT: %SubWith.WithSelf.Op.call: init @SubWith.loc135.%Result.as_type.loc134_54.1 (%Result.as_type) to %.loc137_5.2 = call %bound_method.loc137_5.2(%x.ref, %y.ref) @@ -1585,35 +1660,35 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @MulWith.loc146(%Result.loc143_9.2: %Destroy.type, %U.loc144_4.2: %Destroy.type, %T.loc145_4.2: @MulWith.loc146.%facet_type.loc145_38 (%facet_type.c32)) { +// CHECK:STDOUT: generic fn @MulWith.loc146(%Result.loc143_9.2: %Destroy.type, %U.loc144_4.2: %Destroy.type, %T.loc145_4.2: @MulWith.loc146.%facet_type.loc145_38 (%facet_type.0e5)) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc148: = require_complete_type %MulWith.type.loc145_36.1 [symbolic = %require_complete.loc148 (constants.%require_complete.861)] // CHECK:STDOUT: %assoc1: @MulWith.loc146.%MulWith.assoc_type (%MulWith.assoc_type.a12) = assoc_entity element1, imports.%Core.import_ref.5a0 [symbolic = %assoc1 (constants.%assoc1.a0f)] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148: = lookup_impl_witness %T.loc145_4.1, @MulWith.1, @MulWith.1(%U.as_type.loc145_36.1) [symbolic = %MulWith.lookup_impl_witness.loc148 (constants.%MulWith.lookup_impl_witness.a55)] -// CHECK:STDOUT: %MulWith.facet: @MulWith.loc146.%MulWith.type.loc145_36.1 (%MulWith.type.f02) = facet_value %T.as_type.loc146_29.1, (%MulWith.lookup_impl_witness.loc148) [symbolic = %MulWith.facet (constants.%MulWith.facet.5c8)] -// CHECK:STDOUT: %MulWith.WithSelf.Op.type: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%U.as_type.loc145_36.1, %MulWith.facet) [symbolic = %MulWith.WithSelf.Op.type (constants.%MulWith.WithSelf.Op.type.7b0)] -// CHECK:STDOUT: %.loc148_5.6: type = fn_type_with_self_type %MulWith.WithSelf.Op.type, %MulWith.facet [symbolic = %.loc148_5.6 (constants.%.476)] -// CHECK:STDOUT: %impl.elem1.loc148_5.2: @MulWith.loc146.%.loc148_5.6 (%.476) = impl_witness_access %MulWith.lookup_impl_witness.loc148, element1 [symbolic = %impl.elem1.loc148_5.2 (constants.%impl.elem1.7c4)] -// CHECK:STDOUT: %specific_impl_fn.loc148_5.3: = specific_impl_function %impl.elem1.loc148_5.2, @MulWith.WithSelf.Op(%U.as_type.loc145_36.1, %MulWith.facet) [symbolic = %specific_impl_fn.loc148_5.3 (constants.%specific_impl_fn.57f)] +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148: = lookup_impl_witness %T.loc145_4.1, @MulWith.1, @MulWith.1(%U.as_type.loc145_36.1) [symbolic = %MulWith.lookup_impl_witness.loc148 (constants.%MulWith.lookup_impl_witness.444)] +// CHECK:STDOUT: %MulWith.facet: @MulWith.loc146.%MulWith.type.loc145_36.1 (%MulWith.type.f02) = facet_value %T.as_type.loc146_29.1, (%MulWith.lookup_impl_witness.loc148) [symbolic = %MulWith.facet (constants.%MulWith.facet.b99)] +// CHECK:STDOUT: %MulWith.WithSelf.Op.type: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%U.as_type.loc145_36.1, %MulWith.facet) [symbolic = %MulWith.WithSelf.Op.type (constants.%MulWith.WithSelf.Op.type.c95)] +// CHECK:STDOUT: %.loc148_5.6: type = fn_type_with_self_type %MulWith.WithSelf.Op.type, %MulWith.facet [symbolic = %.loc148_5.6 (constants.%.a49)] +// CHECK:STDOUT: %impl.elem1.loc148_5.2: @MulWith.loc146.%.loc148_5.6 (%.a49) = impl_witness_access %MulWith.lookup_impl_witness.loc148, element1 [symbolic = %impl.elem1.loc148_5.2 (constants.%impl.elem1.a7b)] +// CHECK:STDOUT: %specific_impl_fn.loc148_5.3: = specific_impl_function %impl.elem1.loc148_5.2, @MulWith.WithSelf.Op(%U.as_type.loc145_36.1, %MulWith.facet) [symbolic = %specific_impl_fn.loc148_5.3 (constants.%specific_impl_fn.eab)] // CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Result.loc143_9.1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.d3ece9.2)] // CHECK:STDOUT: %.loc148_5.7: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Result.loc143_9.1 [symbolic = %.loc148_5.7 (constants.%.53a)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Result.loc143_9.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %impl.elem0.loc148_5.2: @MulWith.loc146.%.loc148_5.7 (%.53a) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc148_5.2 (constants.%impl.elem0.0f9)] // CHECK:STDOUT: %specific_impl_fn.loc148_5.4: = specific_impl_function %impl.elem0.loc148_5.2, @Destroy.WithSelf.Op(%Result.loc143_9.1) [symbolic = %specific_impl_fn.loc148_5.4 (constants.%specific_impl_fn.afc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @MulWith.loc146.%Result.as_type.loc145_54.1 (%Result.as_type), %x.param: @MulWith.loc146.%T.as_type.loc146_29.1 (%T.as_type.427), %y.param: @MulWith.loc146.%U.as_type.loc145_36.1 (%U.as_type.b61)) { +// CHECK:STDOUT: fn(%result.param: @MulWith.loc146.%Result.as_type.loc145_54.1 (%Result.as_type), %x.param: @MulWith.loc146.%T.as_type.loc146_29.1 (%T.as_type.83f), %y.param: @MulWith.loc146.%U.as_type.loc145_36.1 (%U.as_type.b61)) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @MulWith.loc146.%T.as_type.loc146_29.1 (%T.as_type.427) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @MulWith.loc146.%T.as_type.loc146_29.1 (%T.as_type.83f) = name_ref x, %x // CHECK:STDOUT: %y.ref: @MulWith.loc146.%U.as_type.loc145_36.1 (%U.as_type.b61) = name_ref y, %y // CHECK:STDOUT: %MulWith.type.loc148: type = facet_type <@MulWith.1, @MulWith.1(constants.%U.as_type.b61)> [symbolic = %MulWith.type.loc145_36.1 (constants.%MulWith.type.f02)] // CHECK:STDOUT: %.loc148_5.1: @MulWith.loc146.%MulWith.assoc_type (%MulWith.assoc_type.a12) = specific_constant imports.%Core.import_ref.8c1, @MulWith.WithSelf(constants.%U.as_type.b61, constants.%Self.941) [symbolic = %assoc1 (constants.%assoc1.a0f)] // CHECK:STDOUT: %Op.ref: @MulWith.loc146.%MulWith.assoc_type (%MulWith.assoc_type.a12) = name_ref Op, %.loc148_5.1 [symbolic = %assoc1 (constants.%assoc1.a0f)] -// CHECK:STDOUT: %impl.elem1.loc148_5.1: @MulWith.loc146.%.loc148_5.6 (%.476) = impl_witness_access constants.%MulWith.lookup_impl_witness.a55, element1 [symbolic = %impl.elem1.loc148_5.2 (constants.%impl.elem1.7c4)] +// CHECK:STDOUT: %impl.elem1.loc148_5.1: @MulWith.loc146.%.loc148_5.6 (%.a49) = impl_witness_access constants.%MulWith.lookup_impl_witness.444, element1 [symbolic = %impl.elem1.loc148_5.2 (constants.%impl.elem1.a7b)] // CHECK:STDOUT: %bound_method.loc148_5.1: = bound_method %x.ref, %impl.elem1.loc148_5.1 -// CHECK:STDOUT: %specific_impl_fn.loc148_5.1: = specific_impl_function %impl.elem1.loc148_5.1, @MulWith.WithSelf.Op(constants.%U.as_type.b61, constants.%MulWith.facet.5c8) [symbolic = %specific_impl_fn.loc148_5.3 (constants.%specific_impl_fn.57f)] +// CHECK:STDOUT: %specific_impl_fn.loc148_5.1: = specific_impl_function %impl.elem1.loc148_5.1, @MulWith.WithSelf.Op(constants.%U.as_type.b61, constants.%MulWith.facet.b99) [symbolic = %specific_impl_fn.loc148_5.3 (constants.%specific_impl_fn.eab)] // CHECK:STDOUT: %bound_method.loc148_5.2: = bound_method %x.ref, %specific_impl_fn.loc148_5.1 // CHECK:STDOUT: %.loc148_5.2: ref @MulWith.loc146.%Result.as_type.loc145_54.1 (%Result.as_type) = temporary_storage // CHECK:STDOUT: %MulWith.WithSelf.Op.call: init @MulWith.loc146.%Result.as_type.loc145_54.1 (%Result.as_type) to %.loc148_5.2 = call %bound_method.loc148_5.2(%x.ref, %y.ref) @@ -1631,35 +1706,35 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @DivWith.loc157(%Result.loc154_9.2: %Destroy.type, %U.loc155_4.2: %Destroy.type, %T.loc156_4.2: @DivWith.loc157.%facet_type.loc156_38 (%facet_type.2f8)) { +// CHECK:STDOUT: generic fn @DivWith.loc157(%Result.loc154_9.2: %Destroy.type, %U.loc155_4.2: %Destroy.type, %T.loc156_4.2: @DivWith.loc157.%facet_type.loc156_38 (%facet_type.ed9)) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc159: = require_complete_type %DivWith.type.loc156_36.1 [symbolic = %require_complete.loc159 (constants.%require_complete.026)] // CHECK:STDOUT: %assoc1: @DivWith.loc157.%DivWith.assoc_type (%DivWith.assoc_type.cf4) = assoc_entity element1, imports.%Core.import_ref.7845 [symbolic = %assoc1 (constants.%assoc1.4eb)] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159: = lookup_impl_witness %T.loc156_4.1, @DivWith.1, @DivWith.1(%U.as_type.loc156_36.1) [symbolic = %DivWith.lookup_impl_witness.loc159 (constants.%DivWith.lookup_impl_witness.df2)] -// CHECK:STDOUT: %DivWith.facet: @DivWith.loc157.%DivWith.type.loc156_36.1 (%DivWith.type.523) = facet_value %T.as_type.loc157_29.1, (%DivWith.lookup_impl_witness.loc159) [symbolic = %DivWith.facet (constants.%DivWith.facet.ac1)] -// CHECK:STDOUT: %DivWith.WithSelf.Op.type: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%U.as_type.loc156_36.1, %DivWith.facet) [symbolic = %DivWith.WithSelf.Op.type (constants.%DivWith.WithSelf.Op.type.cb2)] -// CHECK:STDOUT: %.loc159_5.6: type = fn_type_with_self_type %DivWith.WithSelf.Op.type, %DivWith.facet [symbolic = %.loc159_5.6 (constants.%.2d3)] -// CHECK:STDOUT: %impl.elem1.loc159_5.2: @DivWith.loc157.%.loc159_5.6 (%.2d3) = impl_witness_access %DivWith.lookup_impl_witness.loc159, element1 [symbolic = %impl.elem1.loc159_5.2 (constants.%impl.elem1.254)] -// CHECK:STDOUT: %specific_impl_fn.loc159_5.3: = specific_impl_function %impl.elem1.loc159_5.2, @DivWith.WithSelf.Op(%U.as_type.loc156_36.1, %DivWith.facet) [symbolic = %specific_impl_fn.loc159_5.3 (constants.%specific_impl_fn.518)] +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159: = lookup_impl_witness %T.loc156_4.1, @DivWith.1, @DivWith.1(%U.as_type.loc156_36.1) [symbolic = %DivWith.lookup_impl_witness.loc159 (constants.%DivWith.lookup_impl_witness.831)] +// CHECK:STDOUT: %DivWith.facet: @DivWith.loc157.%DivWith.type.loc156_36.1 (%DivWith.type.523) = facet_value %T.as_type.loc157_29.1, (%DivWith.lookup_impl_witness.loc159) [symbolic = %DivWith.facet (constants.%DivWith.facet.5f7)] +// CHECK:STDOUT: %DivWith.WithSelf.Op.type: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%U.as_type.loc156_36.1, %DivWith.facet) [symbolic = %DivWith.WithSelf.Op.type (constants.%DivWith.WithSelf.Op.type.1b2)] +// CHECK:STDOUT: %.loc159_5.6: type = fn_type_with_self_type %DivWith.WithSelf.Op.type, %DivWith.facet [symbolic = %.loc159_5.6 (constants.%.6b1)] +// CHECK:STDOUT: %impl.elem1.loc159_5.2: @DivWith.loc157.%.loc159_5.6 (%.6b1) = impl_witness_access %DivWith.lookup_impl_witness.loc159, element1 [symbolic = %impl.elem1.loc159_5.2 (constants.%impl.elem1.bfe)] +// CHECK:STDOUT: %specific_impl_fn.loc159_5.3: = specific_impl_function %impl.elem1.loc159_5.2, @DivWith.WithSelf.Op(%U.as_type.loc156_36.1, %DivWith.facet) [symbolic = %specific_impl_fn.loc159_5.3 (constants.%specific_impl_fn.e98)] // CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Result.loc154_9.1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.d3ece9.2)] // CHECK:STDOUT: %.loc159_5.7: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Result.loc154_9.1 [symbolic = %.loc159_5.7 (constants.%.53a)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Result.loc154_9.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %impl.elem0.loc159_5.2: @DivWith.loc157.%.loc159_5.7 (%.53a) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc159_5.2 (constants.%impl.elem0.0f9)] // CHECK:STDOUT: %specific_impl_fn.loc159_5.4: = specific_impl_function %impl.elem0.loc159_5.2, @Destroy.WithSelf.Op(%Result.loc154_9.1) [symbolic = %specific_impl_fn.loc159_5.4 (constants.%specific_impl_fn.afc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @DivWith.loc157.%Result.as_type.loc156_54.1 (%Result.as_type), %x.param: @DivWith.loc157.%T.as_type.loc157_29.1 (%T.as_type.a31), %y.param: @DivWith.loc157.%U.as_type.loc156_36.1 (%U.as_type.b61)) { +// CHECK:STDOUT: fn(%result.param: @DivWith.loc157.%Result.as_type.loc156_54.1 (%Result.as_type), %x.param: @DivWith.loc157.%T.as_type.loc157_29.1 (%T.as_type.a74), %y.param: @DivWith.loc157.%U.as_type.loc156_36.1 (%U.as_type.b61)) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @DivWith.loc157.%T.as_type.loc157_29.1 (%T.as_type.a31) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @DivWith.loc157.%T.as_type.loc157_29.1 (%T.as_type.a74) = name_ref x, %x // CHECK:STDOUT: %y.ref: @DivWith.loc157.%U.as_type.loc156_36.1 (%U.as_type.b61) = name_ref y, %y // CHECK:STDOUT: %DivWith.type.loc159: type = facet_type <@DivWith.1, @DivWith.1(constants.%U.as_type.b61)> [symbolic = %DivWith.type.loc156_36.1 (constants.%DivWith.type.523)] // CHECK:STDOUT: %.loc159_5.1: @DivWith.loc157.%DivWith.assoc_type (%DivWith.assoc_type.cf4) = specific_constant imports.%Core.import_ref.ca2, @DivWith.WithSelf(constants.%U.as_type.b61, constants.%Self.16a) [symbolic = %assoc1 (constants.%assoc1.4eb)] // CHECK:STDOUT: %Op.ref: @DivWith.loc157.%DivWith.assoc_type (%DivWith.assoc_type.cf4) = name_ref Op, %.loc159_5.1 [symbolic = %assoc1 (constants.%assoc1.4eb)] -// CHECK:STDOUT: %impl.elem1.loc159_5.1: @DivWith.loc157.%.loc159_5.6 (%.2d3) = impl_witness_access constants.%DivWith.lookup_impl_witness.df2, element1 [symbolic = %impl.elem1.loc159_5.2 (constants.%impl.elem1.254)] +// CHECK:STDOUT: %impl.elem1.loc159_5.1: @DivWith.loc157.%.loc159_5.6 (%.6b1) = impl_witness_access constants.%DivWith.lookup_impl_witness.831, element1 [symbolic = %impl.elem1.loc159_5.2 (constants.%impl.elem1.bfe)] // CHECK:STDOUT: %bound_method.loc159_5.1: = bound_method %x.ref, %impl.elem1.loc159_5.1 -// CHECK:STDOUT: %specific_impl_fn.loc159_5.1: = specific_impl_function %impl.elem1.loc159_5.1, @DivWith.WithSelf.Op(constants.%U.as_type.b61, constants.%DivWith.facet.ac1) [symbolic = %specific_impl_fn.loc159_5.3 (constants.%specific_impl_fn.518)] +// CHECK:STDOUT: %specific_impl_fn.loc159_5.1: = specific_impl_function %impl.elem1.loc159_5.1, @DivWith.WithSelf.Op(constants.%U.as_type.b61, constants.%DivWith.facet.5f7) [symbolic = %specific_impl_fn.loc159_5.3 (constants.%specific_impl_fn.e98)] // CHECK:STDOUT: %bound_method.loc159_5.2: = bound_method %x.ref, %specific_impl_fn.loc159_5.1 // CHECK:STDOUT: %.loc159_5.2: ref @DivWith.loc157.%Result.as_type.loc156_54.1 (%Result.as_type) = temporary_storage // CHECK:STDOUT: %DivWith.WithSelf.Op.call: init @DivWith.loc157.%Result.as_type.loc156_54.1 (%Result.as_type) to %.loc159_5.2 = call %bound_method.loc159_5.2(%x.ref, %y.ref) @@ -1677,35 +1752,35 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @ModWith.loc168(%Result.loc165_9.2: %Destroy.type, %U.loc166_4.2: %Destroy.type, %T.loc167_4.2: @ModWith.loc168.%facet_type.loc167_38 (%facet_type.9a0)) { +// CHECK:STDOUT: generic fn @ModWith.loc168(%Result.loc165_9.2: %Destroy.type, %U.loc166_4.2: %Destroy.type, %T.loc167_4.2: @ModWith.loc168.%facet_type.loc167_38 (%facet_type.639)) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc170: = require_complete_type %ModWith.type.loc167_36.1 [symbolic = %require_complete.loc170 (constants.%require_complete.a4a)] // CHECK:STDOUT: %assoc1: @ModWith.loc168.%ModWith.assoc_type (%ModWith.assoc_type.626) = assoc_entity element1, imports.%Core.import_ref.b56 [symbolic = %assoc1 (constants.%assoc1.6d1)] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170: = lookup_impl_witness %T.loc167_4.1, @ModWith.1, @ModWith.1(%U.as_type.loc167_36.1) [symbolic = %ModWith.lookup_impl_witness.loc170 (constants.%ModWith.lookup_impl_witness.054)] -// CHECK:STDOUT: %ModWith.facet: @ModWith.loc168.%ModWith.type.loc167_36.1 (%ModWith.type.937) = facet_value %T.as_type.loc168_29.1, (%ModWith.lookup_impl_witness.loc170) [symbolic = %ModWith.facet (constants.%ModWith.facet.555)] -// CHECK:STDOUT: %ModWith.WithSelf.Op.type: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%U.as_type.loc167_36.1, %ModWith.facet) [symbolic = %ModWith.WithSelf.Op.type (constants.%ModWith.WithSelf.Op.type.cfa)] -// CHECK:STDOUT: %.loc170_5.6: type = fn_type_with_self_type %ModWith.WithSelf.Op.type, %ModWith.facet [symbolic = %.loc170_5.6 (constants.%.973)] -// CHECK:STDOUT: %impl.elem1.loc170_5.2: @ModWith.loc168.%.loc170_5.6 (%.973) = impl_witness_access %ModWith.lookup_impl_witness.loc170, element1 [symbolic = %impl.elem1.loc170_5.2 (constants.%impl.elem1.f20)] -// CHECK:STDOUT: %specific_impl_fn.loc170_5.3: = specific_impl_function %impl.elem1.loc170_5.2, @ModWith.WithSelf.Op(%U.as_type.loc167_36.1, %ModWith.facet) [symbolic = %specific_impl_fn.loc170_5.3 (constants.%specific_impl_fn.37e)] +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170: = lookup_impl_witness %T.loc167_4.1, @ModWith.1, @ModWith.1(%U.as_type.loc167_36.1) [symbolic = %ModWith.lookup_impl_witness.loc170 (constants.%ModWith.lookup_impl_witness.e17)] +// CHECK:STDOUT: %ModWith.facet: @ModWith.loc168.%ModWith.type.loc167_36.1 (%ModWith.type.937) = facet_value %T.as_type.loc168_29.1, (%ModWith.lookup_impl_witness.loc170) [symbolic = %ModWith.facet (constants.%ModWith.facet.874)] +// CHECK:STDOUT: %ModWith.WithSelf.Op.type: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%U.as_type.loc167_36.1, %ModWith.facet) [symbolic = %ModWith.WithSelf.Op.type (constants.%ModWith.WithSelf.Op.type.314)] +// CHECK:STDOUT: %.loc170_5.6: type = fn_type_with_self_type %ModWith.WithSelf.Op.type, %ModWith.facet [symbolic = %.loc170_5.6 (constants.%.195)] +// CHECK:STDOUT: %impl.elem1.loc170_5.2: @ModWith.loc168.%.loc170_5.6 (%.195) = impl_witness_access %ModWith.lookup_impl_witness.loc170, element1 [symbolic = %impl.elem1.loc170_5.2 (constants.%impl.elem1.715)] +// CHECK:STDOUT: %specific_impl_fn.loc170_5.3: = specific_impl_function %impl.elem1.loc170_5.2, @ModWith.WithSelf.Op(%U.as_type.loc167_36.1, %ModWith.facet) [symbolic = %specific_impl_fn.loc170_5.3 (constants.%specific_impl_fn.0b2)] // CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Result.loc165_9.1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.d3ece9.2)] // CHECK:STDOUT: %.loc170_5.7: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Result.loc165_9.1 [symbolic = %.loc170_5.7 (constants.%.53a)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Result.loc165_9.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %impl.elem0.loc170_5.2: @ModWith.loc168.%.loc170_5.7 (%.53a) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc170_5.2 (constants.%impl.elem0.0f9)] // CHECK:STDOUT: %specific_impl_fn.loc170_5.4: = specific_impl_function %impl.elem0.loc170_5.2, @Destroy.WithSelf.Op(%Result.loc165_9.1) [symbolic = %specific_impl_fn.loc170_5.4 (constants.%specific_impl_fn.afc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @ModWith.loc168.%Result.as_type.loc167_54.1 (%Result.as_type), %x.param: @ModWith.loc168.%T.as_type.loc168_29.1 (%T.as_type.fcd), %y.param: @ModWith.loc168.%U.as_type.loc167_36.1 (%U.as_type.b61)) { +// CHECK:STDOUT: fn(%result.param: @ModWith.loc168.%Result.as_type.loc167_54.1 (%Result.as_type), %x.param: @ModWith.loc168.%T.as_type.loc168_29.1 (%T.as_type.1c2), %y.param: @ModWith.loc168.%U.as_type.loc167_36.1 (%U.as_type.b61)) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @ModWith.loc168.%T.as_type.loc168_29.1 (%T.as_type.fcd) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @ModWith.loc168.%T.as_type.loc168_29.1 (%T.as_type.1c2) = name_ref x, %x // CHECK:STDOUT: %y.ref: @ModWith.loc168.%U.as_type.loc167_36.1 (%U.as_type.b61) = name_ref y, %y // CHECK:STDOUT: %ModWith.type.loc170: type = facet_type <@ModWith.1, @ModWith.1(constants.%U.as_type.b61)> [symbolic = %ModWith.type.loc167_36.1 (constants.%ModWith.type.937)] // CHECK:STDOUT: %.loc170_5.1: @ModWith.loc168.%ModWith.assoc_type (%ModWith.assoc_type.626) = specific_constant imports.%Core.import_ref.ffe, @ModWith.WithSelf(constants.%U.as_type.b61, constants.%Self.0ef) [symbolic = %assoc1 (constants.%assoc1.6d1)] // CHECK:STDOUT: %Op.ref: @ModWith.loc168.%ModWith.assoc_type (%ModWith.assoc_type.626) = name_ref Op, %.loc170_5.1 [symbolic = %assoc1 (constants.%assoc1.6d1)] -// CHECK:STDOUT: %impl.elem1.loc170_5.1: @ModWith.loc168.%.loc170_5.6 (%.973) = impl_witness_access constants.%ModWith.lookup_impl_witness.054, element1 [symbolic = %impl.elem1.loc170_5.2 (constants.%impl.elem1.f20)] +// CHECK:STDOUT: %impl.elem1.loc170_5.1: @ModWith.loc168.%.loc170_5.6 (%.195) = impl_witness_access constants.%ModWith.lookup_impl_witness.e17, element1 [symbolic = %impl.elem1.loc170_5.2 (constants.%impl.elem1.715)] // CHECK:STDOUT: %bound_method.loc170_5.1: = bound_method %x.ref, %impl.elem1.loc170_5.1 -// CHECK:STDOUT: %specific_impl_fn.loc170_5.1: = specific_impl_function %impl.elem1.loc170_5.1, @ModWith.WithSelf.Op(constants.%U.as_type.b61, constants.%ModWith.facet.555) [symbolic = %specific_impl_fn.loc170_5.3 (constants.%specific_impl_fn.37e)] +// CHECK:STDOUT: %specific_impl_fn.loc170_5.1: = specific_impl_function %impl.elem1.loc170_5.1, @ModWith.WithSelf.Op(constants.%U.as_type.b61, constants.%ModWith.facet.874) [symbolic = %specific_impl_fn.loc170_5.3 (constants.%specific_impl_fn.0b2)] // CHECK:STDOUT: %bound_method.loc170_5.2: = bound_method %x.ref, %specific_impl_fn.loc170_5.1 // CHECK:STDOUT: %.loc170_5.2: ref @ModWith.loc168.%Result.as_type.loc167_54.1 (%Result.as_type) = temporary_storage // CHECK:STDOUT: %ModWith.WithSelf.Op.call: init @ModWith.loc168.%Result.as_type.loc167_54.1 (%Result.as_type) to %.loc170_5.2 = call %bound_method.loc170_5.2(%x.ref, %y.ref) @@ -1937,33 +2012,33 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TestNegate(%Result.loc292_9.2: %Destroy.type, %T.loc293_4.2: @TestNegate.%facet_type (%facet_type.b1d)) { +// CHECK:STDOUT: generic fn @TestNegate(%Result.loc292_9.2: %Destroy.type, %T.loc293_4.2: @TestNegate.%facet_type (%facet_type.352)) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: %Negate.lookup_impl_witness: = lookup_impl_witness %T.loc293_4.1, @Negate [symbolic = %Negate.lookup_impl_witness (constants.%Negate.lookup_impl_witness.48a)] -// CHECK:STDOUT: %Negate.facet.loc296_3.3: %Negate.type = facet_value %T.as_type.loc294_24.1, (%Negate.lookup_impl_witness) [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.f2f)] -// CHECK:STDOUT: %Negate.WithSelf.Op.type: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet.loc296_3.3) [symbolic = %Negate.WithSelf.Op.type (constants.%Negate.WithSelf.Op.type.803)] -// CHECK:STDOUT: %.loc296_3.7: type = fn_type_with_self_type %Negate.WithSelf.Op.type, %Negate.facet.loc296_3.3 [symbolic = %.loc296_3.7 (constants.%.c6c)] -// CHECK:STDOUT: %impl.elem1.loc296_3.2: @TestNegate.%.loc296_3.7 (%.c6c) = impl_witness_access %Negate.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc296_3.2 (constants.%impl.elem1.9a8)] -// CHECK:STDOUT: %specific_impl_fn.loc296_3.3: = specific_impl_function %impl.elem1.loc296_3.2, @Negate.WithSelf.Op(%Negate.facet.loc296_3.3) [symbolic = %specific_impl_fn.loc296_3.3 (constants.%specific_impl_fn.c5a)] +// CHECK:STDOUT: %Negate.lookup_impl_witness: = lookup_impl_witness %T.loc293_4.1, @Negate [symbolic = %Negate.lookup_impl_witness (constants.%Negate.lookup_impl_witness.218)] +// CHECK:STDOUT: %Negate.facet.loc296_3.3: %Negate.type = facet_value %T.as_type.loc294_24.1, (%Negate.lookup_impl_witness) [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.5e5)] +// CHECK:STDOUT: %Negate.WithSelf.Op.type: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet.loc296_3.3) [symbolic = %Negate.WithSelf.Op.type (constants.%Negate.WithSelf.Op.type.d8a)] +// CHECK:STDOUT: %.loc296_3.7: type = fn_type_with_self_type %Negate.WithSelf.Op.type, %Negate.facet.loc296_3.3 [symbolic = %.loc296_3.7 (constants.%.16a)] +// CHECK:STDOUT: %impl.elem1.loc296_3.2: @TestNegate.%.loc296_3.7 (%.16a) = impl_witness_access %Negate.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc296_3.2 (constants.%impl.elem1.ee9)] +// CHECK:STDOUT: %specific_impl_fn.loc296_3.3: = specific_impl_function %impl.elem1.loc296_3.2, @Negate.WithSelf.Op(%Negate.facet.loc296_3.3) [symbolic = %specific_impl_fn.loc296_3.3 (constants.%specific_impl_fn.923)] // CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Result.loc292_9.1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.d3ece9.2)] // CHECK:STDOUT: %.loc296_3.8: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %Result.loc292_9.1 [symbolic = %.loc296_3.8 (constants.%.53a)] // CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %Result.loc292_9.1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)] // CHECK:STDOUT: %impl.elem0.loc296_3.2: @TestNegate.%.loc296_3.8 (%.53a) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc296_3.2 (constants.%impl.elem0.0f9)] // CHECK:STDOUT: %specific_impl_fn.loc296_3.4: = specific_impl_function %impl.elem0.loc296_3.2, @Destroy.WithSelf.Op(%Result.loc292_9.1) [symbolic = %specific_impl_fn.loc296_3.4 (constants.%specific_impl_fn.afc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%y.param: @TestNegate.%Result.as_type.loc293_50.1 (%Result.as_type), %x.param: @TestNegate.%T.as_type.loc294_24.1 (%T.as_type.a98)) { +// CHECK:STDOUT: fn(%y.param: @TestNegate.%Result.as_type.loc293_50.1 (%Result.as_type), %x.param: @TestNegate.%T.as_type.loc294_24.1 (%T.as_type.684)) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @TestNegate.%T.as_type.loc294_24.1 (%T.as_type.a98) = name_ref x, %x -// CHECK:STDOUT: %impl.elem1.loc296_3.1: @TestNegate.%.loc296_3.7 (%.c6c) = impl_witness_access constants.%Negate.lookup_impl_witness.48a, element1 [symbolic = %impl.elem1.loc296_3.2 (constants.%impl.elem1.9a8)] +// CHECK:STDOUT: %x.ref: @TestNegate.%T.as_type.loc294_24.1 (%T.as_type.684) = name_ref x, %x +// CHECK:STDOUT: %impl.elem1.loc296_3.1: @TestNegate.%.loc296_3.7 (%.16a) = impl_witness_access constants.%Negate.lookup_impl_witness.218, element1 [symbolic = %impl.elem1.loc296_3.2 (constants.%impl.elem1.ee9)] // CHECK:STDOUT: %bound_method.loc296_3.1: = bound_method %x.ref, %impl.elem1.loc296_3.1 -// CHECK:STDOUT: %Negate.facet.loc296_3.1: %Negate.type = facet_value constants.%T.as_type.a98, (constants.%Negate.lookup_impl_witness.48a) [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.f2f)] -// CHECK:STDOUT: %.loc296_3.1: %Negate.type = converted constants.%T.as_type.a98, %Negate.facet.loc296_3.1 [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.f2f)] -// CHECK:STDOUT: %Negate.facet.loc296_3.2: %Negate.type = facet_value constants.%T.as_type.a98, (constants.%Negate.lookup_impl_witness.48a) [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.f2f)] -// CHECK:STDOUT: %.loc296_3.2: %Negate.type = converted constants.%T.as_type.a98, %Negate.facet.loc296_3.2 [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.f2f)] -// CHECK:STDOUT: %specific_impl_fn.loc296_3.1: = specific_impl_function %impl.elem1.loc296_3.1, @Negate.WithSelf.Op(constants.%Negate.facet.f2f) [symbolic = %specific_impl_fn.loc296_3.3 (constants.%specific_impl_fn.c5a)] +// CHECK:STDOUT: %Negate.facet.loc296_3.1: %Negate.type = facet_value constants.%T.as_type.684, (constants.%Negate.lookup_impl_witness.218) [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.5e5)] +// CHECK:STDOUT: %.loc296_3.1: %Negate.type = converted constants.%T.as_type.684, %Negate.facet.loc296_3.1 [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.5e5)] +// CHECK:STDOUT: %Negate.facet.loc296_3.2: %Negate.type = facet_value constants.%T.as_type.684, (constants.%Negate.lookup_impl_witness.218) [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.5e5)] +// CHECK:STDOUT: %.loc296_3.2: %Negate.type = converted constants.%T.as_type.684, %Negate.facet.loc296_3.2 [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.5e5)] +// CHECK:STDOUT: %specific_impl_fn.loc296_3.1: = specific_impl_function %impl.elem1.loc296_3.1, @Negate.WithSelf.Op(constants.%Negate.facet.5e5) [symbolic = %specific_impl_fn.loc296_3.3 (constants.%specific_impl_fn.923)] // CHECK:STDOUT: %bound_method.loc296_3.2: = bound_method %x.ref, %specific_impl_fn.loc296_3.1 // CHECK:STDOUT: %.loc296_3.3: ref @TestNegate.%Result.as_type.loc293_50.1 (%Result.as_type) = temporary_storage // CHECK:STDOUT: %Negate.WithSelf.Op.call: init @TestNegate.%Result.as_type.loc293_50.1 (%Result.as_type) to %.loc296_3.3 = call %bound_method.loc296_3.2(%x.ref) @@ -1981,7 +2056,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AddWith.loc124(constants.%Result, constants.%U.f40, constants.%T.200) { +// CHECK:STDOUT: specific @AddWith.loc124(constants.%Result, constants.%U.f40, constants.%T.ceb) { // CHECK:STDOUT: %Result.patt.loc121_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc121_9.1 => constants.%Result // CHECK:STDOUT: %U.patt.loc122_4.2 => constants.%U.patt.7a2 @@ -1989,31 +2064,34 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc123_36.1 => constants.%U.as_type.b61 // CHECK:STDOUT: %AddWith.type.loc123_36.1 => constants.%AddWith.type.9da // CHECK:STDOUT: %facet_type.loc123_20 => constants.%facet_type.b1e -// CHECK:STDOUT: %.Self.loc123_38.1 => constants.%.Self.d6f +// CHECK:STDOUT: %.Self.frozen.loc123_38.1 => constants.%.Self.frozen.1ea // CHECK:STDOUT: %require_complete.loc123 => constants.%require_complete.c7d -// CHECK:STDOUT: %.Self.as_type.loc123_44.1 => constants.%.Self.as_type.38e +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.015 // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.bc8 // CHECK:STDOUT: %assoc0 => constants.%assoc0.21f -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.29f -// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.8bb +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.1 => constants.%AddWith.lookup_impl_witness.2f6 +// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.1c6 // CHECK:STDOUT: %Result.as_type.loc123_54.1 => constants.%Result.as_type -// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.096 -// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.3fb -// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.c80 -// CHECK:STDOUT: %T.loc123_4.1 => constants.%T.200 +// CHECK:STDOUT: %.Self => constants.%.Self.014 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.2 => constants.%AddWith.lookup_impl_witness.0d5 +// CHECK:STDOUT: %impl.elem0.loc123_44.2 => constants.%impl.elem0.ea5 +// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.c2e +// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.0a9 +// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.69e +// CHECK:STDOUT: %T.loc123_4.1 => constants.%T.ceb // CHECK:STDOUT: %pattern_type.loc124_16 => constants.%pattern_type.f4e485.2 // CHECK:STDOUT: %result.param_patt.loc124_16.2 => constants.%result.param_patt.6ba // CHECK:STDOUT: %result.patt.loc124_16.2 => constants.%result.patt.748373.1 -// CHECK:STDOUT: %T.as_type.loc124_29.1 => constants.%T.as_type.606 -// CHECK:STDOUT: %pattern_type.loc124_27 => constants.%pattern_type.82c -// CHECK:STDOUT: %x.param_patt.loc124_27.2 => constants.%x.param_patt.4c4 -// CHECK:STDOUT: %x.patt.loc124_27.2 => constants.%x.patt.eac +// CHECK:STDOUT: %T.as_type.loc124_29.1 => constants.%T.as_type.6fc +// CHECK:STDOUT: %pattern_type.loc124_27 => constants.%pattern_type.786 +// CHECK:STDOUT: %x.param_patt.loc124_27.2 => constants.%x.param_patt.0c5 +// CHECK:STDOUT: %x.patt.loc124_27.2 => constants.%x.patt.4db // CHECK:STDOUT: %pattern_type.loc124_33 => constants.%pattern_type.753 // CHECK:STDOUT: %y.param_patt.loc124_33.2 => constants.%y.param_patt.740 // CHECK:STDOUT: %y.patt.loc124_33.2 => constants.%y.patt.4ae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @SubWith.loc135(constants.%Result, constants.%U.f40, constants.%T.967) { +// CHECK:STDOUT: specific @SubWith.loc135(constants.%Result, constants.%U.f40, constants.%T.bf6) { // CHECK:STDOUT: %Result.patt.loc132_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc132_9.1 => constants.%Result // CHECK:STDOUT: %U.patt.loc133_4.2 => constants.%U.patt.7a2 @@ -2021,31 +2099,34 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc134_36.1 => constants.%U.as_type.b61 // CHECK:STDOUT: %SubWith.type.loc134_36.1 => constants.%SubWith.type.b5d // CHECK:STDOUT: %facet_type.loc134_20 => constants.%facet_type.d46 -// CHECK:STDOUT: %.Self.loc134_38.1 => constants.%.Self.642 +// CHECK:STDOUT: %.Self.frozen.loc134_38.1 => constants.%.Self.frozen.efa // CHECK:STDOUT: %require_complete.loc134 => constants.%require_complete.cda -// CHECK:STDOUT: %.Self.as_type.loc134_44.1 => constants.%.Self.as_type.715 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.79f // CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.3a1 // CHECK:STDOUT: %assoc0 => constants.%assoc0.729 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.ce5 -// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.0fb +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.1 => constants.%SubWith.lookup_impl_witness.acf +// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.050 // CHECK:STDOUT: %Result.as_type.loc134_54.1 => constants.%Result.as_type -// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.5a5 -// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.156 -// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.53c -// CHECK:STDOUT: %T.loc134_4.1 => constants.%T.967 +// CHECK:STDOUT: %.Self => constants.%.Self.d13 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.2 => constants.%SubWith.lookup_impl_witness.5d0 +// CHECK:STDOUT: %impl.elem0.loc134_44.2 => constants.%impl.elem0.e4e +// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.eeb +// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.502 +// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.cd4 +// CHECK:STDOUT: %T.loc134_4.1 => constants.%T.bf6 // CHECK:STDOUT: %pattern_type.loc135_16 => constants.%pattern_type.f4e485.2 // CHECK:STDOUT: %result.param_patt.loc135_16.2 => constants.%result.param_patt.6ba // CHECK:STDOUT: %result.patt.loc135_16.2 => constants.%result.patt.748373.1 -// CHECK:STDOUT: %T.as_type.loc135_29.1 => constants.%T.as_type.b22 -// CHECK:STDOUT: %pattern_type.loc135_27 => constants.%pattern_type.000 -// CHECK:STDOUT: %x.param_patt.loc135_27.2 => constants.%x.param_patt.408 -// CHECK:STDOUT: %x.patt.loc135_27.2 => constants.%x.patt.a66 +// CHECK:STDOUT: %T.as_type.loc135_29.1 => constants.%T.as_type.58f +// CHECK:STDOUT: %pattern_type.loc135_27 => constants.%pattern_type.a10 +// CHECK:STDOUT: %x.param_patt.loc135_27.2 => constants.%x.param_patt.02e +// CHECK:STDOUT: %x.patt.loc135_27.2 => constants.%x.patt.eb5 // CHECK:STDOUT: %pattern_type.loc135_33 => constants.%pattern_type.753 // CHECK:STDOUT: %y.param_patt.loc135_33.2 => constants.%y.param_patt.740 // CHECK:STDOUT: %y.patt.loc135_33.2 => constants.%y.patt.4ae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MulWith.loc146(constants.%Result, constants.%U.f40, constants.%T.546) { +// CHECK:STDOUT: specific @MulWith.loc146(constants.%Result, constants.%U.f40, constants.%T.9a2) { // CHECK:STDOUT: %Result.patt.loc143_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc143_9.1 => constants.%Result // CHECK:STDOUT: %U.patt.loc144_4.2 => constants.%U.patt.7a2 @@ -2053,31 +2134,34 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc145_36.1 => constants.%U.as_type.b61 // CHECK:STDOUT: %MulWith.type.loc145_36.1 => constants.%MulWith.type.f02 // CHECK:STDOUT: %facet_type.loc145_20 => constants.%facet_type.f87 -// CHECK:STDOUT: %.Self.loc145_38.1 => constants.%.Self.b68 +// CHECK:STDOUT: %.Self.frozen.loc145_38.1 => constants.%.Self.frozen.463 // CHECK:STDOUT: %require_complete.loc145 => constants.%require_complete.0a3 -// CHECK:STDOUT: %.Self.as_type.loc145_44.1 => constants.%.Self.as_type.d1e +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.e91 // CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.a12 // CHECK:STDOUT: %assoc0 => constants.%assoc0.116 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.0d7 -// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.10f +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.1 => constants.%MulWith.lookup_impl_witness.637 +// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.132 // CHECK:STDOUT: %Result.as_type.loc145_54.1 => constants.%Result.as_type -// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.c32 -// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.d38 -// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.881 -// CHECK:STDOUT: %T.loc145_4.1 => constants.%T.546 +// CHECK:STDOUT: %.Self => constants.%.Self.588 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.2 => constants.%MulWith.lookup_impl_witness.d4f +// CHECK:STDOUT: %impl.elem0.loc145_44.2 => constants.%impl.elem0.62f +// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.0e5 +// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.e8a +// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.dec +// CHECK:STDOUT: %T.loc145_4.1 => constants.%T.9a2 // CHECK:STDOUT: %pattern_type.loc146_16 => constants.%pattern_type.f4e485.2 // CHECK:STDOUT: %result.param_patt.loc146_16.2 => constants.%result.param_patt.6ba // CHECK:STDOUT: %result.patt.loc146_16.2 => constants.%result.patt.748373.1 -// CHECK:STDOUT: %T.as_type.loc146_29.1 => constants.%T.as_type.427 -// CHECK:STDOUT: %pattern_type.loc146_27 => constants.%pattern_type.d10 -// CHECK:STDOUT: %x.param_patt.loc146_27.2 => constants.%x.param_patt.df8 -// CHECK:STDOUT: %x.patt.loc146_27.2 => constants.%x.patt.32c +// CHECK:STDOUT: %T.as_type.loc146_29.1 => constants.%T.as_type.83f +// CHECK:STDOUT: %pattern_type.loc146_27 => constants.%pattern_type.fff +// CHECK:STDOUT: %x.param_patt.loc146_27.2 => constants.%x.param_patt.f8f +// CHECK:STDOUT: %x.patt.loc146_27.2 => constants.%x.patt.909 // CHECK:STDOUT: %pattern_type.loc146_33 => constants.%pattern_type.753 // CHECK:STDOUT: %y.param_patt.loc146_33.2 => constants.%y.param_patt.740 // CHECK:STDOUT: %y.patt.loc146_33.2 => constants.%y.patt.4ae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DivWith.loc157(constants.%Result, constants.%U.f40, constants.%T.040) { +// CHECK:STDOUT: specific @DivWith.loc157(constants.%Result, constants.%U.f40, constants.%T.4bb) { // CHECK:STDOUT: %Result.patt.loc154_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc154_9.1 => constants.%Result // CHECK:STDOUT: %U.patt.loc155_4.2 => constants.%U.patt.7a2 @@ -2085,31 +2169,34 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc156_36.1 => constants.%U.as_type.b61 // CHECK:STDOUT: %DivWith.type.loc156_36.1 => constants.%DivWith.type.523 // CHECK:STDOUT: %facet_type.loc156_20 => constants.%facet_type.86cd -// CHECK:STDOUT: %.Self.loc156_38.1 => constants.%.Self.10e +// CHECK:STDOUT: %.Self.frozen.loc156_38.1 => constants.%.Self.frozen.1f9 // CHECK:STDOUT: %require_complete.loc156 => constants.%require_complete.4d7 -// CHECK:STDOUT: %.Self.as_type.loc156_44.1 => constants.%.Self.as_type.c52 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.8ca // CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.cf4 // CHECK:STDOUT: %assoc0 => constants.%assoc0.c57 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.d63 -// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.df8 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.1 => constants.%DivWith.lookup_impl_witness.154 +// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.252 // CHECK:STDOUT: %Result.as_type.loc156_54.1 => constants.%Result.as_type -// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.2f8 -// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.297 -// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.7ab -// CHECK:STDOUT: %T.loc156_4.1 => constants.%T.040 +// CHECK:STDOUT: %.Self => constants.%.Self.862 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.2 => constants.%DivWith.lookup_impl_witness.d02 +// CHECK:STDOUT: %impl.elem0.loc156_44.2 => constants.%impl.elem0.606 +// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.ed9 +// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.07c +// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.869 +// CHECK:STDOUT: %T.loc156_4.1 => constants.%T.4bb // CHECK:STDOUT: %pattern_type.loc157_16 => constants.%pattern_type.f4e485.2 // CHECK:STDOUT: %result.param_patt.loc157_16.2 => constants.%result.param_patt.6ba // CHECK:STDOUT: %result.patt.loc157_16.2 => constants.%result.patt.748373.1 -// CHECK:STDOUT: %T.as_type.loc157_29.1 => constants.%T.as_type.a31 -// CHECK:STDOUT: %pattern_type.loc157_27 => constants.%pattern_type.126 -// CHECK:STDOUT: %x.param_patt.loc157_27.2 => constants.%x.param_patt.422 -// CHECK:STDOUT: %x.patt.loc157_27.2 => constants.%x.patt.bed +// CHECK:STDOUT: %T.as_type.loc157_29.1 => constants.%T.as_type.a74 +// CHECK:STDOUT: %pattern_type.loc157_27 => constants.%pattern_type.b83 +// CHECK:STDOUT: %x.param_patt.loc157_27.2 => constants.%x.param_patt.21f +// CHECK:STDOUT: %x.patt.loc157_27.2 => constants.%x.patt.46c // CHECK:STDOUT: %pattern_type.loc157_33 => constants.%pattern_type.753 // CHECK:STDOUT: %y.param_patt.loc157_33.2 => constants.%y.param_patt.740 // CHECK:STDOUT: %y.patt.loc157_33.2 => constants.%y.patt.4ae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @ModWith.loc168(constants.%Result, constants.%U.f40, constants.%T.095) { +// CHECK:STDOUT: specific @ModWith.loc168(constants.%Result, constants.%U.f40, constants.%T.999) { // CHECK:STDOUT: %Result.patt.loc165_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc165_9.1 => constants.%Result // CHECK:STDOUT: %U.patt.loc166_4.2 => constants.%U.patt.7a2 @@ -2117,31 +2204,34 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc167_36.1 => constants.%U.as_type.b61 // CHECK:STDOUT: %ModWith.type.loc167_36.1 => constants.%ModWith.type.937 // CHECK:STDOUT: %facet_type.loc167_20 => constants.%facet_type.b18 -// CHECK:STDOUT: %.Self.loc167_38.1 => constants.%.Self.0f7 +// CHECK:STDOUT: %.Self.frozen.loc167_38.1 => constants.%.Self.frozen.f70 // CHECK:STDOUT: %require_complete.loc167 => constants.%require_complete.708 -// CHECK:STDOUT: %.Self.as_type.loc167_44.1 => constants.%.Self.as_type.f55 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.447 // CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.626 // CHECK:STDOUT: %assoc0 => constants.%assoc0.56e -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.4a2 -// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.36b +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.1 => constants.%ModWith.lookup_impl_witness.80e +// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.523 // CHECK:STDOUT: %Result.as_type.loc167_54.1 => constants.%Result.as_type -// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.9a0 -// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.82f -// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.74f -// CHECK:STDOUT: %T.loc167_4.1 => constants.%T.095 +// CHECK:STDOUT: %.Self => constants.%.Self.a68 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.2 => constants.%ModWith.lookup_impl_witness.569 +// CHECK:STDOUT: %impl.elem0.loc167_44.2 => constants.%impl.elem0.c51 +// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.639 +// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.d85 +// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.49b +// CHECK:STDOUT: %T.loc167_4.1 => constants.%T.999 // CHECK:STDOUT: %pattern_type.loc168_16 => constants.%pattern_type.f4e485.2 // CHECK:STDOUT: %result.param_patt.loc168_16.2 => constants.%result.param_patt.6ba // CHECK:STDOUT: %result.patt.loc168_16.2 => constants.%result.patt.748373.1 -// CHECK:STDOUT: %T.as_type.loc168_29.1 => constants.%T.as_type.fcd -// CHECK:STDOUT: %pattern_type.loc168_27 => constants.%pattern_type.2e7 -// CHECK:STDOUT: %x.param_patt.loc168_27.2 => constants.%x.param_patt.a0f -// CHECK:STDOUT: %x.patt.loc168_27.2 => constants.%x.patt.d43 +// CHECK:STDOUT: %T.as_type.loc168_29.1 => constants.%T.as_type.1c2 +// CHECK:STDOUT: %pattern_type.loc168_27 => constants.%pattern_type.01b +// CHECK:STDOUT: %x.param_patt.loc168_27.2 => constants.%x.param_patt.f25 +// CHECK:STDOUT: %x.patt.loc168_27.2 => constants.%x.patt.804 // CHECK:STDOUT: %pattern_type.loc168_33 => constants.%pattern_type.753 // CHECK:STDOUT: %y.param_patt.loc168_33.2 => constants.%y.param_patt.740 // CHECK:STDOUT: %y.patt.loc168_33.2 => constants.%y.patt.4ae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.b750) { +// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.696) { // CHECK:STDOUT: %Result.patt.loc121_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc121_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc122_4.2 => constants.%U.patt.7a2 @@ -2149,18 +2239,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc123_36.1 => constants.%Int16 // CHECK:STDOUT: %AddWith.type.loc123_36.1 => constants.%AddWith.type.b62 // CHECK:STDOUT: %facet_type.loc123_20 => constants.%facet_type.297 -// CHECK:STDOUT: %.Self.loc123_38.1 => constants.%.Self.120 +// CHECK:STDOUT: %.Self.frozen.loc123_38.1 => constants.%.Self.frozen.7e3 // CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.a82 -// CHECK:STDOUT: %.Self.as_type.loc123_44.1 => constants.%.Self.as_type.9c7 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.85e // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.c72 // CHECK:STDOUT: %assoc0 => constants.%assoc0.261 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.560 -// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.7e0 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.1 => constants.%AddWith.lookup_impl_witness.5b7 +// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.d80 // CHECK:STDOUT: %Result.as_type.loc123_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.376 -// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.48e -// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.5cc -// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.b750 +// CHECK:STDOUT: %.Self => constants.%.Self.45a +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.2 => constants.%AddWith.lookup_impl_witness.131 +// CHECK:STDOUT: %impl.elem0.loc123_44.2 => constants.%impl.elem0.28c +// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.225 +// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.34a +// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.3ec +// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.696 // CHECK:STDOUT: %pattern_type.loc124_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc124_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc124_16.2 => constants.%result.patt.488 @@ -2191,7 +2284,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc126_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.9fa) { +// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.031) { // CHECK:STDOUT: %Result.patt.loc132_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc132_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc133_4.2 => constants.%U.patt.7a2 @@ -2199,18 +2292,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc134_36.1 => constants.%Int16 // CHECK:STDOUT: %SubWith.type.loc134_36.1 => constants.%SubWith.type.b12 // CHECK:STDOUT: %facet_type.loc134_20 => constants.%facet_type.b15 -// CHECK:STDOUT: %.Self.loc134_38.1 => constants.%.Self.4e4 +// CHECK:STDOUT: %.Self.frozen.loc134_38.1 => constants.%.Self.frozen.581 // CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.647 -// CHECK:STDOUT: %.Self.as_type.loc134_44.1 => constants.%.Self.as_type.bcf +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.092 // CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.eb8 // CHECK:STDOUT: %assoc0 => constants.%assoc0.a90 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.780 -// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.104 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.1 => constants.%SubWith.lookup_impl_witness.b30 +// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.748 // CHECK:STDOUT: %Result.as_type.loc134_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.2e5 -// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.943 -// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.bc1 -// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.9fa +// CHECK:STDOUT: %.Self => constants.%.Self.415 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.2 => constants.%SubWith.lookup_impl_witness.266 +// CHECK:STDOUT: %impl.elem0.loc134_44.2 => constants.%impl.elem0.4a0 +// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.b71 +// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.f54 +// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.842 +// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.031 // CHECK:STDOUT: %pattern_type.loc135_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc135_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc135_16.2 => constants.%result.patt.488 @@ -2241,7 +2337,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc137_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.074) { +// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.920) { // CHECK:STDOUT: %Result.patt.loc143_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc143_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc144_4.2 => constants.%U.patt.7a2 @@ -2249,18 +2345,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc145_36.1 => constants.%Int16 // CHECK:STDOUT: %MulWith.type.loc145_36.1 => constants.%MulWith.type.c18 // CHECK:STDOUT: %facet_type.loc145_20 => constants.%facet_type.a64 -// CHECK:STDOUT: %.Self.loc145_38.1 => constants.%.Self.c25 +// CHECK:STDOUT: %.Self.frozen.loc145_38.1 => constants.%.Self.frozen.05e // CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.4d3 -// CHECK:STDOUT: %.Self.as_type.loc145_44.1 => constants.%.Self.as_type.354 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.2d1 // CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.f15 // CHECK:STDOUT: %assoc0 => constants.%assoc0.f8b -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.e32 -// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.472 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.1 => constants.%MulWith.lookup_impl_witness.701 +// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.381 // CHECK:STDOUT: %Result.as_type.loc145_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.e71 -// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.b79 -// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.544 -// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.074 +// CHECK:STDOUT: %.Self => constants.%.Self.00f +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.2 => constants.%MulWith.lookup_impl_witness.782 +// CHECK:STDOUT: %impl.elem0.loc145_44.2 => constants.%impl.elem0.8de +// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.662 +// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.90f +// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.8ad +// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.920 // CHECK:STDOUT: %pattern_type.loc146_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc146_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc146_16.2 => constants.%result.patt.488 @@ -2291,7 +2390,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc148_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.c41) { +// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.ce6) { // CHECK:STDOUT: %Result.patt.loc154_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc154_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc155_4.2 => constants.%U.patt.7a2 @@ -2299,18 +2398,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc156_36.1 => constants.%Int16 // CHECK:STDOUT: %DivWith.type.loc156_36.1 => constants.%DivWith.type.6f9 // CHECK:STDOUT: %facet_type.loc156_20 => constants.%facet_type.0b4 -// CHECK:STDOUT: %.Self.loc156_38.1 => constants.%.Self.927 +// CHECK:STDOUT: %.Self.frozen.loc156_38.1 => constants.%.Self.frozen.ecc // CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.acc -// CHECK:STDOUT: %.Self.as_type.loc156_44.1 => constants.%.Self.as_type.87a +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.851 // CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.333 // CHECK:STDOUT: %assoc0 => constants.%assoc0.962 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.ac4 -// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.6aa +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.1 => constants.%DivWith.lookup_impl_witness.6fa +// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.e0f // CHECK:STDOUT: %Result.as_type.loc156_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.84f -// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.abe -// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.15c -// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.c41 +// CHECK:STDOUT: %.Self => constants.%.Self.9b5 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.2 => constants.%DivWith.lookup_impl_witness.648 +// CHECK:STDOUT: %impl.elem0.loc156_44.2 => constants.%impl.elem0.36a +// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.bd6 +// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.692 +// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.00c +// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.ce6 // CHECK:STDOUT: %pattern_type.loc157_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc157_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc157_16.2 => constants.%result.patt.488 @@ -2341,7 +2443,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc159_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.849) { +// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.2cc, constants.%Destroy.facet.2cc, constants.%facet_value.cde) { // CHECK:STDOUT: %Result.patt.loc165_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc165_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc166_4.2 => constants.%U.patt.7a2 @@ -2349,18 +2451,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc167_36.1 => constants.%Int16 // CHECK:STDOUT: %ModWith.type.loc167_36.1 => constants.%ModWith.type.763 // CHECK:STDOUT: %facet_type.loc167_20 => constants.%facet_type.ee8 -// CHECK:STDOUT: %.Self.loc167_38.1 => constants.%.Self.a1e +// CHECK:STDOUT: %.Self.frozen.loc167_38.1 => constants.%.Self.frozen.9a7 // CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.8fc -// CHECK:STDOUT: %.Self.as_type.loc167_44.1 => constants.%.Self.as_type.1da +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.954 // CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.e6a // CHECK:STDOUT: %assoc0 => constants.%assoc0.2cc -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.c0b -// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.dae +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.1 => constants.%ModWith.lookup_impl_witness.689 +// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.42c // CHECK:STDOUT: %Result.as_type.loc167_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.1b7 -// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.45b -// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.a2e -// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.849 +// CHECK:STDOUT: %.Self => constants.%.Self.67f +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.2 => constants.%ModWith.lookup_impl_witness.af3 +// CHECK:STDOUT: %impl.elem0.loc167_44.2 => constants.%impl.elem0.436 +// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.a2b +// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.61d +// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.a00 +// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.cde // CHECK:STDOUT: %pattern_type.loc168_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc168_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc168_16.2 => constants.%result.patt.488 @@ -2391,7 +2496,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc170_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.dbc) { +// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.0c7) { // CHECK:STDOUT: %Result.patt.loc121_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc121_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc122_4.2 => constants.%U.patt.7a2 @@ -2399,18 +2504,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc123_36.1 => constants.%i16 // CHECK:STDOUT: %AddWith.type.loc123_36.1 => constants.%AddWith.type.a36 // CHECK:STDOUT: %facet_type.loc123_20 => constants.%facet_type.1cc -// CHECK:STDOUT: %.Self.loc123_38.1 => constants.%.Self.b3b +// CHECK:STDOUT: %.Self.frozen.loc123_38.1 => constants.%.Self.frozen.e5b // CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.5a6 -// CHECK:STDOUT: %.Self.as_type.loc123_44.1 => constants.%.Self.as_type.552 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.b7c // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.6bf // CHECK:STDOUT: %assoc0 => constants.%assoc0.e6b -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.fc6 -// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.46e +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.1 => constants.%AddWith.lookup_impl_witness.047 +// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.f6a // CHECK:STDOUT: %Result.as_type.loc123_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.3ae -// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.9c1 -// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.ec4 -// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.dbc +// CHECK:STDOUT: %.Self => constants.%.Self.a82 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.2 => constants.%AddWith.lookup_impl_witness.e27 +// CHECK:STDOUT: %impl.elem0.loc123_44.2 => constants.%impl.elem0.115 +// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.b7b +// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.c51 +// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.5cb +// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.0c7 // CHECK:STDOUT: %pattern_type.loc124_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc124_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc124_16.2 => constants.%result.patt.488 @@ -2441,7 +2549,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc126_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.5c8) { +// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.33e) { // CHECK:STDOUT: %Result.patt.loc132_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc132_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc133_4.2 => constants.%U.patt.7a2 @@ -2449,18 +2557,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc134_36.1 => constants.%i16 // CHECK:STDOUT: %SubWith.type.loc134_36.1 => constants.%SubWith.type.08b // CHECK:STDOUT: %facet_type.loc134_20 => constants.%facet_type.cb2 -// CHECK:STDOUT: %.Self.loc134_38.1 => constants.%.Self.408 +// CHECK:STDOUT: %.Self.frozen.loc134_38.1 => constants.%.Self.frozen.bbc // CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.090 -// CHECK:STDOUT: %.Self.as_type.loc134_44.1 => constants.%.Self.as_type.d2a +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.ae6 // CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.077 // CHECK:STDOUT: %assoc0 => constants.%assoc0.465 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.8c9 -// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.727 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.1 => constants.%SubWith.lookup_impl_witness.596 +// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.733 // CHECK:STDOUT: %Result.as_type.loc134_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.a54 -// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.612 -// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.c74 -// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.5c8 +// CHECK:STDOUT: %.Self => constants.%.Self.a84 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.2 => constants.%SubWith.lookup_impl_witness.581 +// CHECK:STDOUT: %impl.elem0.loc134_44.2 => constants.%impl.elem0.a77 +// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.a67 +// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.486 +// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.eb2 +// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.33e // CHECK:STDOUT: %pattern_type.loc135_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc135_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc135_16.2 => constants.%result.patt.488 @@ -2491,7 +2602,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc137_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.158) { +// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.ba4) { // CHECK:STDOUT: %Result.patt.loc143_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc143_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc144_4.2 => constants.%U.patt.7a2 @@ -2499,18 +2610,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc145_36.1 => constants.%i16 // CHECK:STDOUT: %MulWith.type.loc145_36.1 => constants.%MulWith.type.55d // CHECK:STDOUT: %facet_type.loc145_20 => constants.%facet_type.67c -// CHECK:STDOUT: %.Self.loc145_38.1 => constants.%.Self.3be +// CHECK:STDOUT: %.Self.frozen.loc145_38.1 => constants.%.Self.frozen.c15 // CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.a8b -// CHECK:STDOUT: %.Self.as_type.loc145_44.1 => constants.%.Self.as_type.523 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.225 // CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.212 // CHECK:STDOUT: %assoc0 => constants.%assoc0.455 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.446 -// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.192 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.1 => constants.%MulWith.lookup_impl_witness.481 +// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.574 // CHECK:STDOUT: %Result.as_type.loc145_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.d1d -// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.fc4 -// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.ce4 -// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.158 +// CHECK:STDOUT: %.Self => constants.%.Self.5dd +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.2 => constants.%MulWith.lookup_impl_witness.092 +// CHECK:STDOUT: %impl.elem0.loc145_44.2 => constants.%impl.elem0.163 +// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.d40 +// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.f6f +// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.dc7 +// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.ba4 // CHECK:STDOUT: %pattern_type.loc146_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc146_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc146_16.2 => constants.%result.patt.488 @@ -2541,7 +2655,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc148_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.8dc) { +// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.521) { // CHECK:STDOUT: %Result.patt.loc154_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc154_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc155_4.2 => constants.%U.patt.7a2 @@ -2549,18 +2663,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc156_36.1 => constants.%i16 // CHECK:STDOUT: %DivWith.type.loc156_36.1 => constants.%DivWith.type.ab0 // CHECK:STDOUT: %facet_type.loc156_20 => constants.%facet_type.86c8 -// CHECK:STDOUT: %.Self.loc156_38.1 => constants.%.Self.2ad +// CHECK:STDOUT: %.Self.frozen.loc156_38.1 => constants.%.Self.frozen.128 // CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.1cb -// CHECK:STDOUT: %.Self.as_type.loc156_44.1 => constants.%.Self.as_type.445 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.ac3 // CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.1f2 // CHECK:STDOUT: %assoc0 => constants.%assoc0.be2 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.2b4 -// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.7e7 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.1 => constants.%DivWith.lookup_impl_witness.a5b +// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.4e9 // CHECK:STDOUT: %Result.as_type.loc156_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.bdc -// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.b62 -// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.596 -// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.8dc +// CHECK:STDOUT: %.Self => constants.%.Self.d04 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.2 => constants.%DivWith.lookup_impl_witness.6ec +// CHECK:STDOUT: %impl.elem0.loc156_44.2 => constants.%impl.elem0.58b +// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.541 +// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.80a +// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.c06 +// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.521 // CHECK:STDOUT: %pattern_type.loc157_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc157_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc157_16.2 => constants.%result.patt.488 @@ -2591,7 +2708,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc159_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.8657) { +// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.2cc, constants.%Destroy.facet.e5c, constants.%facet_value.ce1) { // CHECK:STDOUT: %Result.patt.loc165_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc165_9.1 => constants.%Destroy.facet.2cc // CHECK:STDOUT: %U.patt.loc166_4.2 => constants.%U.patt.7a2 @@ -2599,18 +2716,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc167_36.1 => constants.%i16 // CHECK:STDOUT: %ModWith.type.loc167_36.1 => constants.%ModWith.type.0b2 // CHECK:STDOUT: %facet_type.loc167_20 => constants.%facet_type.afdb -// CHECK:STDOUT: %.Self.loc167_38.1 => constants.%.Self.ceb +// CHECK:STDOUT: %.Self.frozen.loc167_38.1 => constants.%.Self.frozen.46c // CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.1f9 -// CHECK:STDOUT: %.Self.as_type.loc167_44.1 => constants.%.Self.as_type.1c1 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.12f // CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.e06 // CHECK:STDOUT: %assoc0 => constants.%assoc0.b5a -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.af5 -// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.4a6 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.1 => constants.%ModWith.lookup_impl_witness.5ab +// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.172 // CHECK:STDOUT: %Result.as_type.loc167_54.1 => constants.%Int16 -// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.dde -// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.9c7 -// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.b55 -// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.8657 +// CHECK:STDOUT: %.Self => constants.%.Self.69d +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.2 => constants.%ModWith.lookup_impl_witness.b3b +// CHECK:STDOUT: %impl.elem0.loc167_44.2 => constants.%impl.elem0.0f8 +// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.ee6 +// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.4d8 +// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.a7e +// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.ce1 // CHECK:STDOUT: %pattern_type.loc168_16 => constants.%pattern_type.785 // CHECK:STDOUT: %result.param_patt.loc168_16.2 => constants.%result.param_patt.be6 // CHECK:STDOUT: %result.patt.loc168_16.2 => constants.%result.patt.488 @@ -2641,7 +2761,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc170_5.4 => constants.%Int16.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.5c0) { +// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.17e) { // CHECK:STDOUT: %Result.patt.loc121_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc121_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc122_4.2 => constants.%U.patt.7a2 @@ -2649,18 +2769,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc123_36.1 => constants.%Int32 // CHECK:STDOUT: %AddWith.type.loc123_36.1 => constants.%AddWith.type.c71 // CHECK:STDOUT: %facet_type.loc123_20 => constants.%facet_type.698 -// CHECK:STDOUT: %.Self.loc123_38.1 => constants.%.Self.1bc +// CHECK:STDOUT: %.Self.frozen.loc123_38.1 => constants.%.Self.frozen.f1e // CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.224 -// CHECK:STDOUT: %.Self.as_type.loc123_44.1 => constants.%.Self.as_type.cbd +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.440 // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.72d // CHECK:STDOUT: %assoc0 => constants.%assoc0.c2b -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.d80 -// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.899 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.1 => constants.%AddWith.lookup_impl_witness.7f6 +// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.7a4 // CHECK:STDOUT: %Result.as_type.loc123_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.cf0 -// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.44d -// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.fb1 -// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.5c0 +// CHECK:STDOUT: %.Self => constants.%.Self.591 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.2 => constants.%AddWith.lookup_impl_witness.47a +// CHECK:STDOUT: %impl.elem0.loc123_44.2 => constants.%impl.elem0.6e6 +// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.ecf +// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.c976 +// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.0a8 +// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.17e // CHECK:STDOUT: %pattern_type.loc124_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc124_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc124_16.2 => constants.%result.patt.830 @@ -2691,7 +2814,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc126_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.a20) { +// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.9eb) { // CHECK:STDOUT: %Result.patt.loc132_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc132_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc133_4.2 => constants.%U.patt.7a2 @@ -2699,18 +2822,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc134_36.1 => constants.%Int32 // CHECK:STDOUT: %SubWith.type.loc134_36.1 => constants.%SubWith.type.c81 // CHECK:STDOUT: %facet_type.loc134_20 => constants.%facet_type.44e -// CHECK:STDOUT: %.Self.loc134_38.1 => constants.%.Self.4d7 +// CHECK:STDOUT: %.Self.frozen.loc134_38.1 => constants.%.Self.frozen.db8 // CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.63f -// CHECK:STDOUT: %.Self.as_type.loc134_44.1 => constants.%.Self.as_type.07c +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.068 // CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.68f // CHECK:STDOUT: %assoc0 => constants.%assoc0.f11 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.566 -// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.ee1 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.1 => constants.%SubWith.lookup_impl_witness.32d +// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.821 // CHECK:STDOUT: %Result.as_type.loc134_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.0f8 -// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.9624 -// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.bd6 -// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.a20 +// CHECK:STDOUT: %.Self => constants.%.Self.8ac +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.2 => constants.%SubWith.lookup_impl_witness.f41 +// CHECK:STDOUT: %impl.elem0.loc134_44.2 => constants.%impl.elem0.e31 +// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.630 +// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.c58 +// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.315 +// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.9eb // CHECK:STDOUT: %pattern_type.loc135_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc135_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc135_16.2 => constants.%result.patt.830 @@ -2741,7 +2867,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc137_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.f68) { +// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.9ae) { // CHECK:STDOUT: %Result.patt.loc143_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc143_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc144_4.2 => constants.%U.patt.7a2 @@ -2749,18 +2875,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc145_36.1 => constants.%Int32 // CHECK:STDOUT: %MulWith.type.loc145_36.1 => constants.%MulWith.type.eeb // CHECK:STDOUT: %facet_type.loc145_20 => constants.%facet_type.ff6 -// CHECK:STDOUT: %.Self.loc145_38.1 => constants.%.Self.a5b +// CHECK:STDOUT: %.Self.frozen.loc145_38.1 => constants.%.Self.frozen.be6 // CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.3fe -// CHECK:STDOUT: %.Self.as_type.loc145_44.1 => constants.%.Self.as_type.646 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.aaf // CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.083 // CHECK:STDOUT: %assoc0 => constants.%assoc0.fc0 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.a28 -// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.d19 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.1 => constants.%MulWith.lookup_impl_witness.4cf +// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.167 // CHECK:STDOUT: %Result.as_type.loc145_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.cf6 -// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.08b -// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.1f7 -// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.f68 +// CHECK:STDOUT: %.Self => constants.%.Self.d4f +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.2 => constants.%MulWith.lookup_impl_witness.07b +// CHECK:STDOUT: %impl.elem0.loc145_44.2 => constants.%impl.elem0.0ea +// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.26b +// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.354 +// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.4b7 +// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.9ae // CHECK:STDOUT: %pattern_type.loc146_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc146_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc146_16.2 => constants.%result.patt.830 @@ -2791,7 +2920,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc148_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.6d0) { +// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.38c) { // CHECK:STDOUT: %Result.patt.loc154_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc154_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc155_4.2 => constants.%U.patt.7a2 @@ -2799,18 +2928,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc156_36.1 => constants.%Int32 // CHECK:STDOUT: %DivWith.type.loc156_36.1 => constants.%DivWith.type.fb1 // CHECK:STDOUT: %facet_type.loc156_20 => constants.%facet_type.d41 -// CHECK:STDOUT: %.Self.loc156_38.1 => constants.%.Self.d8c +// CHECK:STDOUT: %.Self.frozen.loc156_38.1 => constants.%.Self.frozen.be1 // CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.11b -// CHECK:STDOUT: %.Self.as_type.loc156_44.1 => constants.%.Self.as_type.30d +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.88a // CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.725 // CHECK:STDOUT: %assoc0 => constants.%assoc0.2da -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.d3c -// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.282 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.1 => constants.%DivWith.lookup_impl_witness.385 +// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.b42 // CHECK:STDOUT: %Result.as_type.loc156_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.639 -// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.379 -// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.2d3 -// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.6d0 +// CHECK:STDOUT: %.Self => constants.%.Self.13f +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.2 => constants.%DivWith.lookup_impl_witness.abd +// CHECK:STDOUT: %impl.elem0.loc156_44.2 => constants.%impl.elem0.1a6 +// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.1a8 +// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.761 +// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.f94 +// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.38c // CHECK:STDOUT: %pattern_type.loc157_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc157_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc157_16.2 => constants.%result.patt.830 @@ -2841,7 +2973,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc159_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.72f) { +// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.68d) { // CHECK:STDOUT: %Result.patt.loc165_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc165_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc166_4.2 => constants.%U.patt.7a2 @@ -2849,18 +2981,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc167_36.1 => constants.%Int32 // CHECK:STDOUT: %ModWith.type.loc167_36.1 => constants.%ModWith.type.253 // CHECK:STDOUT: %facet_type.loc167_20 => constants.%facet_type.ea8 -// CHECK:STDOUT: %.Self.loc167_38.1 => constants.%.Self.46e +// CHECK:STDOUT: %.Self.frozen.loc167_38.1 => constants.%.Self.frozen.4b6 // CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.2aa -// CHECK:STDOUT: %.Self.as_type.loc167_44.1 => constants.%.Self.as_type.7e4 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.080 // CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.47d // CHECK:STDOUT: %assoc0 => constants.%assoc0.45c -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.b37 -// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.32c +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.1 => constants.%ModWith.lookup_impl_witness.fe2 +// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.e60 // CHECK:STDOUT: %Result.as_type.loc167_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.cac -// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.e4f -// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.786 -// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.72f +// CHECK:STDOUT: %.Self => constants.%.Self.008 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.2 => constants.%ModWith.lookup_impl_witness.557 +// CHECK:STDOUT: %impl.elem0.loc167_44.2 => constants.%impl.elem0.cdb +// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.c8c +// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.c9a +// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.b4d +// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.68d // CHECK:STDOUT: %pattern_type.loc168_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc168_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc168_16.2 => constants.%result.patt.830 @@ -2891,7 +3026,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc170_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.aa2) { +// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.6ea) { // CHECK:STDOUT: %Result.patt.loc121_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc121_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc122_4.2 => constants.%U.patt.7a2 @@ -2899,18 +3034,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc123_36.1 => constants.%Int16 // CHECK:STDOUT: %AddWith.type.loc123_36.1 => constants.%AddWith.type.b62 // CHECK:STDOUT: %facet_type.loc123_20 => constants.%facet_type.297 -// CHECK:STDOUT: %.Self.loc123_38.1 => constants.%.Self.120 +// CHECK:STDOUT: %.Self.frozen.loc123_38.1 => constants.%.Self.frozen.7e3 // CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.a82 -// CHECK:STDOUT: %.Self.as_type.loc123_44.1 => constants.%.Self.as_type.9c7 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.85e // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.c72 // CHECK:STDOUT: %assoc0 => constants.%assoc0.261 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.560 -// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.7e0 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.1 => constants.%AddWith.lookup_impl_witness.5b7 +// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.d80 // CHECK:STDOUT: %Result.as_type.loc123_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.2c6 -// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.96f -// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.bd3 -// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.aa2 +// CHECK:STDOUT: %.Self => constants.%.Self.45a +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.2 => constants.%AddWith.lookup_impl_witness.131 +// CHECK:STDOUT: %impl.elem0.loc123_44.2 => constants.%impl.elem0.28c +// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.37e +// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.363 +// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.ccd +// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.6ea // CHECK:STDOUT: %pattern_type.loc124_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc124_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc124_16.2 => constants.%result.patt.830 @@ -2941,7 +3079,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc126_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.577) { +// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.bcc) { // CHECK:STDOUT: %Result.patt.loc132_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc132_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc133_4.2 => constants.%U.patt.7a2 @@ -2949,18 +3087,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc134_36.1 => constants.%Int16 // CHECK:STDOUT: %SubWith.type.loc134_36.1 => constants.%SubWith.type.b12 // CHECK:STDOUT: %facet_type.loc134_20 => constants.%facet_type.b15 -// CHECK:STDOUT: %.Self.loc134_38.1 => constants.%.Self.4e4 +// CHECK:STDOUT: %.Self.frozen.loc134_38.1 => constants.%.Self.frozen.581 // CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.647 -// CHECK:STDOUT: %.Self.as_type.loc134_44.1 => constants.%.Self.as_type.bcf +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.092 // CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.eb8 // CHECK:STDOUT: %assoc0 => constants.%assoc0.a90 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.780 -// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.104 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.1 => constants.%SubWith.lookup_impl_witness.b30 +// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.748 // CHECK:STDOUT: %Result.as_type.loc134_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.076 -// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.05c -// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.f98 -// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.577 +// CHECK:STDOUT: %.Self => constants.%.Self.415 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.2 => constants.%SubWith.lookup_impl_witness.266 +// CHECK:STDOUT: %impl.elem0.loc134_44.2 => constants.%impl.elem0.4a0 +// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.983 +// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.af3 +// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.14c +// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.bcc // CHECK:STDOUT: %pattern_type.loc135_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc135_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc135_16.2 => constants.%result.patt.830 @@ -2991,7 +3132,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc137_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.0f9) { +// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.795) { // CHECK:STDOUT: %Result.patt.loc143_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc143_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc144_4.2 => constants.%U.patt.7a2 @@ -2999,18 +3140,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc145_36.1 => constants.%Int16 // CHECK:STDOUT: %MulWith.type.loc145_36.1 => constants.%MulWith.type.c18 // CHECK:STDOUT: %facet_type.loc145_20 => constants.%facet_type.a64 -// CHECK:STDOUT: %.Self.loc145_38.1 => constants.%.Self.c25 +// CHECK:STDOUT: %.Self.frozen.loc145_38.1 => constants.%.Self.frozen.05e // CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.4d3 -// CHECK:STDOUT: %.Self.as_type.loc145_44.1 => constants.%.Self.as_type.354 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.2d1 // CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.f15 // CHECK:STDOUT: %assoc0 => constants.%assoc0.f8b -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.e32 -// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.472 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.1 => constants.%MulWith.lookup_impl_witness.701 +// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.381 // CHECK:STDOUT: %Result.as_type.loc145_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.163 -// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.59d -// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.e40 -// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.0f9 +// CHECK:STDOUT: %.Self => constants.%.Self.00f +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.2 => constants.%MulWith.lookup_impl_witness.782 +// CHECK:STDOUT: %impl.elem0.loc145_44.2 => constants.%impl.elem0.8de +// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.f48 +// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.02f +// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.a9e +// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.795 // CHECK:STDOUT: %pattern_type.loc146_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc146_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc146_16.2 => constants.%result.patt.830 @@ -3041,7 +3185,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc148_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.53b) { +// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.c8d) { // CHECK:STDOUT: %Result.patt.loc154_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc154_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc155_4.2 => constants.%U.patt.7a2 @@ -3049,18 +3193,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc156_36.1 => constants.%Int16 // CHECK:STDOUT: %DivWith.type.loc156_36.1 => constants.%DivWith.type.6f9 // CHECK:STDOUT: %facet_type.loc156_20 => constants.%facet_type.0b4 -// CHECK:STDOUT: %.Self.loc156_38.1 => constants.%.Self.927 +// CHECK:STDOUT: %.Self.frozen.loc156_38.1 => constants.%.Self.frozen.ecc // CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.acc -// CHECK:STDOUT: %.Self.as_type.loc156_44.1 => constants.%.Self.as_type.87a +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.851 // CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.333 // CHECK:STDOUT: %assoc0 => constants.%assoc0.962 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.ac4 -// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.6aa +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.1 => constants.%DivWith.lookup_impl_witness.6fa +// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.e0f // CHECK:STDOUT: %Result.as_type.loc156_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.f1f -// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.c6c -// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.361 -// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.53b +// CHECK:STDOUT: %.Self => constants.%.Self.9b5 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.2 => constants.%DivWith.lookup_impl_witness.648 +// CHECK:STDOUT: %impl.elem0.loc156_44.2 => constants.%impl.elem0.36a +// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.50d +// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.9af +// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.dfa +// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.c8d // CHECK:STDOUT: %pattern_type.loc157_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc157_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc157_16.2 => constants.%result.patt.830 @@ -3091,7 +3238,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc159_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.b75a) { +// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.099, constants.%Destroy.facet.2cc, constants.%facet_value.da8) { // CHECK:STDOUT: %Result.patt.loc165_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc165_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc166_4.2 => constants.%U.patt.7a2 @@ -3099,18 +3246,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc167_36.1 => constants.%Int16 // CHECK:STDOUT: %ModWith.type.loc167_36.1 => constants.%ModWith.type.763 // CHECK:STDOUT: %facet_type.loc167_20 => constants.%facet_type.ee8 -// CHECK:STDOUT: %.Self.loc167_38.1 => constants.%.Self.a1e +// CHECK:STDOUT: %.Self.frozen.loc167_38.1 => constants.%.Self.frozen.9a7 // CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.8fc -// CHECK:STDOUT: %.Self.as_type.loc167_44.1 => constants.%.Self.as_type.1da +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.954 // CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.e6a // CHECK:STDOUT: %assoc0 => constants.%assoc0.2cc -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.c0b -// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.dae +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.1 => constants.%ModWith.lookup_impl_witness.689 +// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.42c // CHECK:STDOUT: %Result.as_type.loc167_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.3eb -// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.205 -// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.1df -// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.b75a +// CHECK:STDOUT: %.Self => constants.%.Self.67f +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.2 => constants.%ModWith.lookup_impl_witness.af3 +// CHECK:STDOUT: %impl.elem0.loc167_44.2 => constants.%impl.elem0.436 +// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.b37 +// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.448 +// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.528 +// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.da8 // CHECK:STDOUT: %pattern_type.loc168_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc168_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc168_16.2 => constants.%result.patt.830 @@ -3141,7 +3291,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc170_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.8ac) { +// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.f1a) { // CHECK:STDOUT: %Result.patt.loc121_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc121_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc122_4.2 => constants.%U.patt.7a2 @@ -3149,18 +3299,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc123_36.1 => constants.%Int32 // CHECK:STDOUT: %AddWith.type.loc123_36.1 => constants.%AddWith.type.c71 // CHECK:STDOUT: %facet_type.loc123_20 => constants.%facet_type.698 -// CHECK:STDOUT: %.Self.loc123_38.1 => constants.%.Self.1bc +// CHECK:STDOUT: %.Self.frozen.loc123_38.1 => constants.%.Self.frozen.f1e // CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.224 -// CHECK:STDOUT: %.Self.as_type.loc123_44.1 => constants.%.Self.as_type.cbd +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.440 // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.72d // CHECK:STDOUT: %assoc0 => constants.%assoc0.c2b -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.d80 -// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.899 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.1 => constants.%AddWith.lookup_impl_witness.7f6 +// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.7a4 // CHECK:STDOUT: %Result.as_type.loc123_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.cf0 -// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.44d -// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.fb1 -// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.8ac +// CHECK:STDOUT: %.Self => constants.%.Self.591 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.2 => constants.%AddWith.lookup_impl_witness.47a +// CHECK:STDOUT: %impl.elem0.loc123_44.2 => constants.%impl.elem0.6e6 +// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.ecf +// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.c976 +// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.0a8 +// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.f1a // CHECK:STDOUT: %pattern_type.loc124_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc124_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc124_16.2 => constants.%result.patt.830 @@ -3191,7 +3344,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc126_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.e83) { +// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.6fc) { // CHECK:STDOUT: %Result.patt.loc132_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc132_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc133_4.2 => constants.%U.patt.7a2 @@ -3199,18 +3352,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc134_36.1 => constants.%Int32 // CHECK:STDOUT: %SubWith.type.loc134_36.1 => constants.%SubWith.type.c81 // CHECK:STDOUT: %facet_type.loc134_20 => constants.%facet_type.44e -// CHECK:STDOUT: %.Self.loc134_38.1 => constants.%.Self.4d7 +// CHECK:STDOUT: %.Self.frozen.loc134_38.1 => constants.%.Self.frozen.db8 // CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.63f -// CHECK:STDOUT: %.Self.as_type.loc134_44.1 => constants.%.Self.as_type.07c +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.068 // CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.68f // CHECK:STDOUT: %assoc0 => constants.%assoc0.f11 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.566 -// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.ee1 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.1 => constants.%SubWith.lookup_impl_witness.32d +// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.821 // CHECK:STDOUT: %Result.as_type.loc134_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.0f8 -// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.9624 -// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.bd6 -// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.e83 +// CHECK:STDOUT: %.Self => constants.%.Self.8ac +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.2 => constants.%SubWith.lookup_impl_witness.f41 +// CHECK:STDOUT: %impl.elem0.loc134_44.2 => constants.%impl.elem0.e31 +// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.630 +// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.c58 +// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.315 +// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.6fc // CHECK:STDOUT: %pattern_type.loc135_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc135_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc135_16.2 => constants.%result.patt.830 @@ -3241,7 +3397,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc137_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.4a1) { +// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.c80) { // CHECK:STDOUT: %Result.patt.loc143_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc143_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc144_4.2 => constants.%U.patt.7a2 @@ -3249,18 +3405,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc145_36.1 => constants.%Int32 // CHECK:STDOUT: %MulWith.type.loc145_36.1 => constants.%MulWith.type.eeb // CHECK:STDOUT: %facet_type.loc145_20 => constants.%facet_type.ff6 -// CHECK:STDOUT: %.Self.loc145_38.1 => constants.%.Self.a5b +// CHECK:STDOUT: %.Self.frozen.loc145_38.1 => constants.%.Self.frozen.be6 // CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.3fe -// CHECK:STDOUT: %.Self.as_type.loc145_44.1 => constants.%.Self.as_type.646 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.aaf // CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.083 // CHECK:STDOUT: %assoc0 => constants.%assoc0.fc0 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.a28 -// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.d19 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.1 => constants.%MulWith.lookup_impl_witness.4cf +// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.167 // CHECK:STDOUT: %Result.as_type.loc145_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.cf6 -// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.08b -// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.1f7 -// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.4a1 +// CHECK:STDOUT: %.Self => constants.%.Self.d4f +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.2 => constants.%MulWith.lookup_impl_witness.07b +// CHECK:STDOUT: %impl.elem0.loc145_44.2 => constants.%impl.elem0.0ea +// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.26b +// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.354 +// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.4b7 +// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.c80 // CHECK:STDOUT: %pattern_type.loc146_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc146_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc146_16.2 => constants.%result.patt.830 @@ -3291,7 +3450,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc148_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.0bb) { +// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.b2c) { // CHECK:STDOUT: %Result.patt.loc154_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc154_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc155_4.2 => constants.%U.patt.7a2 @@ -3299,18 +3458,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc156_36.1 => constants.%Int32 // CHECK:STDOUT: %DivWith.type.loc156_36.1 => constants.%DivWith.type.fb1 // CHECK:STDOUT: %facet_type.loc156_20 => constants.%facet_type.d41 -// CHECK:STDOUT: %.Self.loc156_38.1 => constants.%.Self.d8c +// CHECK:STDOUT: %.Self.frozen.loc156_38.1 => constants.%.Self.frozen.be1 // CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.11b -// CHECK:STDOUT: %.Self.as_type.loc156_44.1 => constants.%.Self.as_type.30d +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.88a // CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.725 // CHECK:STDOUT: %assoc0 => constants.%assoc0.2da -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.d3c -// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.282 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.1 => constants.%DivWith.lookup_impl_witness.385 +// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.b42 // CHECK:STDOUT: %Result.as_type.loc156_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.639 -// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.379 -// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.2d3 -// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.0bb +// CHECK:STDOUT: %.Self => constants.%.Self.13f +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.2 => constants.%DivWith.lookup_impl_witness.abd +// CHECK:STDOUT: %impl.elem0.loc156_44.2 => constants.%impl.elem0.1a6 +// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.1a8 +// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.761 +// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.f94 +// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.b2c // CHECK:STDOUT: %pattern_type.loc157_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc157_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc157_16.2 => constants.%result.patt.830 @@ -3341,7 +3503,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc159_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.081) { +// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.099, constants.%Destroy.facet.099, constants.%facet_value.7ec) { // CHECK:STDOUT: %Result.patt.loc165_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc165_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %U.patt.loc166_4.2 => constants.%U.patt.7a2 @@ -3349,18 +3511,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc167_36.1 => constants.%Int32 // CHECK:STDOUT: %ModWith.type.loc167_36.1 => constants.%ModWith.type.253 // CHECK:STDOUT: %facet_type.loc167_20 => constants.%facet_type.ea8 -// CHECK:STDOUT: %.Self.loc167_38.1 => constants.%.Self.46e +// CHECK:STDOUT: %.Self.frozen.loc167_38.1 => constants.%.Self.frozen.4b6 // CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.2aa -// CHECK:STDOUT: %.Self.as_type.loc167_44.1 => constants.%.Self.as_type.7e4 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.080 // CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.47d // CHECK:STDOUT: %assoc0 => constants.%assoc0.45c -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.b37 -// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.32c +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.1 => constants.%ModWith.lookup_impl_witness.fe2 +// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.e60 // CHECK:STDOUT: %Result.as_type.loc167_54.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.cac -// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.e4f -// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.786 -// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.081 +// CHECK:STDOUT: %.Self => constants.%.Self.008 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.2 => constants.%ModWith.lookup_impl_witness.557 +// CHECK:STDOUT: %impl.elem0.loc167_44.2 => constants.%impl.elem0.cdb +// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.c8c +// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.c9a +// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.b4d +// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.7ec // CHECK:STDOUT: %pattern_type.loc168_16 => constants.%pattern_type.8b4 // CHECK:STDOUT: %result.param_patt.loc168_16.2 => constants.%result.param_patt.e81 // CHECK:STDOUT: %result.patt.loc168_16.2 => constants.%result.patt.830 @@ -3391,7 +3556,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc170_5.4 => constants.%Int32.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.aa8) { +// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.178) { // CHECK:STDOUT: %Result.patt.loc121_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc121_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc122_4.2 => constants.%U.patt.7a2 @@ -3399,18 +3564,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc123_36.1 => constants.%Int64 // CHECK:STDOUT: %AddWith.type.loc123_36.1 => constants.%AddWith.type.b5b // CHECK:STDOUT: %facet_type.loc123_20 => constants.%facet_type.afd1 -// CHECK:STDOUT: %.Self.loc123_38.1 => constants.%.Self.52f +// CHECK:STDOUT: %.Self.frozen.loc123_38.1 => constants.%.Self.frozen.2e1 // CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.412 -// CHECK:STDOUT: %.Self.as_type.loc123_44.1 => constants.%.Self.as_type.7a8 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.d9c // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.0c5 // CHECK:STDOUT: %assoc0 => constants.%assoc0.947 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.dd9 -// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.325 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.1 => constants.%AddWith.lookup_impl_witness.bc7 +// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.a41 // CHECK:STDOUT: %Result.as_type.loc123_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.466 -// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.a1a -// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.7de -// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.aa8 +// CHECK:STDOUT: %.Self => constants.%.Self.d7b +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.2 => constants.%AddWith.lookup_impl_witness.085 +// CHECK:STDOUT: %impl.elem0.loc123_44.2 => constants.%impl.elem0.7e8 +// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.522 +// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.613 +// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.f5c +// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.178 // CHECK:STDOUT: %pattern_type.loc124_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc124_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc124_16.2 => constants.%result.patt.41f @@ -3441,7 +3609,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc126_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.f7c) { +// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.c78) { // CHECK:STDOUT: %Result.patt.loc132_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc132_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc133_4.2 => constants.%U.patt.7a2 @@ -3449,18 +3617,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc134_36.1 => constants.%Int64 // CHECK:STDOUT: %SubWith.type.loc134_36.1 => constants.%SubWith.type.a46 // CHECK:STDOUT: %facet_type.loc134_20 => constants.%facet_type.502 -// CHECK:STDOUT: %.Self.loc134_38.1 => constants.%.Self.26a +// CHECK:STDOUT: %.Self.frozen.loc134_38.1 => constants.%.Self.frozen.da7 // CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.181 -// CHECK:STDOUT: %.Self.as_type.loc134_44.1 => constants.%.Self.as_type.5b8 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.436 // CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.e16 // CHECK:STDOUT: %assoc0 => constants.%assoc0.88a -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.61b -// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.80a +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.1 => constants.%SubWith.lookup_impl_witness.362 +// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.f3a // CHECK:STDOUT: %Result.as_type.loc134_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.b42 -// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.84a -// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.726 -// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.f7c +// CHECK:STDOUT: %.Self => constants.%.Self.074 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.2 => constants.%SubWith.lookup_impl_witness.0c4 +// CHECK:STDOUT: %impl.elem0.loc134_44.2 => constants.%impl.elem0.68d +// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.e5e +// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.41a +// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.282 +// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.c78 // CHECK:STDOUT: %pattern_type.loc135_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc135_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc135_16.2 => constants.%result.patt.41f @@ -3491,7 +3662,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc137_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.4d0) { +// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.34a) { // CHECK:STDOUT: %Result.patt.loc143_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc143_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc144_4.2 => constants.%U.patt.7a2 @@ -3499,18 +3670,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc145_36.1 => constants.%Int64 // CHECK:STDOUT: %MulWith.type.loc145_36.1 => constants.%MulWith.type.76f // CHECK:STDOUT: %facet_type.loc145_20 => constants.%facet_type.770 -// CHECK:STDOUT: %.Self.loc145_38.1 => constants.%.Self.700 +// CHECK:STDOUT: %.Self.frozen.loc145_38.1 => constants.%.Self.frozen.f85 // CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.16e -// CHECK:STDOUT: %.Self.as_type.loc145_44.1 => constants.%.Self.as_type.356 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.f77 // CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.a37 // CHECK:STDOUT: %assoc0 => constants.%assoc0.210 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.6cf -// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.aad +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.1 => constants.%MulWith.lookup_impl_witness.472 +// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.c8c // CHECK:STDOUT: %Result.as_type.loc145_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.5ef -// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.1fe -// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.cb4 -// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.4d0 +// CHECK:STDOUT: %.Self => constants.%.Self.4e1 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.2 => constants.%MulWith.lookup_impl_witness.55a +// CHECK:STDOUT: %impl.elem0.loc145_44.2 => constants.%impl.elem0.641 +// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.9a3 +// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.346 +// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.6f8 +// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.34a // CHECK:STDOUT: %pattern_type.loc146_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc146_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc146_16.2 => constants.%result.patt.41f @@ -3541,7 +3715,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc148_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.7d4) { +// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.dd9) { // CHECK:STDOUT: %Result.patt.loc154_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc154_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc155_4.2 => constants.%U.patt.7a2 @@ -3549,18 +3723,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc156_36.1 => constants.%Int64 // CHECK:STDOUT: %DivWith.type.loc156_36.1 => constants.%DivWith.type.095 // CHECK:STDOUT: %facet_type.loc156_20 => constants.%facet_type.c98 -// CHECK:STDOUT: %.Self.loc156_38.1 => constants.%.Self.837 +// CHECK:STDOUT: %.Self.frozen.loc156_38.1 => constants.%.Self.frozen.8cb // CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.621 -// CHECK:STDOUT: %.Self.as_type.loc156_44.1 => constants.%.Self.as_type.6a2 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.bdb // CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.8a4 // CHECK:STDOUT: %assoc0 => constants.%assoc0.982 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.7a8 -// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.a9d +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.1 => constants.%DivWith.lookup_impl_witness.a82 +// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.709 // CHECK:STDOUT: %Result.as_type.loc156_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.be3 -// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.2d9 -// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.219 -// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.7d4 +// CHECK:STDOUT: %.Self => constants.%.Self.f70 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.2 => constants.%DivWith.lookup_impl_witness.4c3 +// CHECK:STDOUT: %impl.elem0.loc156_44.2 => constants.%impl.elem0.622 +// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.641 +// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.719 +// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.e0b +// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.dd9 // CHECK:STDOUT: %pattern_type.loc157_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc157_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc157_16.2 => constants.%result.patt.41f @@ -3591,7 +3768,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc159_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.774) { +// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.191, constants.%Destroy.facet.191, constants.%facet_value.ea3) { // CHECK:STDOUT: %Result.patt.loc165_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc165_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc166_4.2 => constants.%U.patt.7a2 @@ -3599,18 +3776,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc167_36.1 => constants.%Int64 // CHECK:STDOUT: %ModWith.type.loc167_36.1 => constants.%ModWith.type.204 // CHECK:STDOUT: %facet_type.loc167_20 => constants.%facet_type.f26 -// CHECK:STDOUT: %.Self.loc167_38.1 => constants.%.Self.767 +// CHECK:STDOUT: %.Self.frozen.loc167_38.1 => constants.%.Self.frozen.ac6 // CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.359 -// CHECK:STDOUT: %.Self.as_type.loc167_44.1 => constants.%.Self.as_type.1a7 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.17a // CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.1f7 // CHECK:STDOUT: %assoc0 => constants.%assoc0.0a6 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.e0f -// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.5f0 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.1 => constants.%ModWith.lookup_impl_witness.072 +// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.220 // CHECK:STDOUT: %Result.as_type.loc167_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.74d -// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.41c -// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.078 -// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.774 +// CHECK:STDOUT: %.Self => constants.%.Self.494 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.2 => constants.%ModWith.lookup_impl_witness.103 +// CHECK:STDOUT: %impl.elem0.loc167_44.2 => constants.%impl.elem0.ffb +// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.096 +// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.df3 +// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.c87 +// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.ea3 // CHECK:STDOUT: %pattern_type.loc168_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc168_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc168_16.2 => constants.%result.patt.41f @@ -3641,7 +3821,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc170_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.7d0) { +// CHECK:STDOUT: specific @AddWith.loc124(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.393) { // CHECK:STDOUT: %Result.patt.loc121_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc121_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc122_4.2 => constants.%U.patt.7a2 @@ -3649,18 +3829,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc123_36.1 => constants.%Int32 // CHECK:STDOUT: %AddWith.type.loc123_36.1 => constants.%AddWith.type.c71 // CHECK:STDOUT: %facet_type.loc123_20 => constants.%facet_type.698 -// CHECK:STDOUT: %.Self.loc123_38.1 => constants.%.Self.1bc +// CHECK:STDOUT: %.Self.frozen.loc123_38.1 => constants.%.Self.frozen.f1e // CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.224 -// CHECK:STDOUT: %.Self.as_type.loc123_44.1 => constants.%.Self.as_type.cbd +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.440 // CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.72d // CHECK:STDOUT: %assoc0 => constants.%assoc0.c2b -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.d80 -// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.899 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.1 => constants.%AddWith.lookup_impl_witness.7f6 +// CHECK:STDOUT: %impl.elem0.loc123_44.1 => constants.%impl.elem0.7a4 // CHECK:STDOUT: %Result.as_type.loc123_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.fdd -// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.5b4 -// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.688 -// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.7d0 +// CHECK:STDOUT: %.Self => constants.%.Self.591 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_44.2 => constants.%AddWith.lookup_impl_witness.47a +// CHECK:STDOUT: %impl.elem0.loc123_44.2 => constants.%impl.elem0.6e6 +// CHECK:STDOUT: %facet_type.loc123_38 => constants.%facet_type.840 +// CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.46d +// CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.211 +// CHECK:STDOUT: %T.loc123_4.1 => constants.%facet_value.393 // CHECK:STDOUT: %pattern_type.loc124_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc124_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc124_16.2 => constants.%result.patt.41f @@ -3691,7 +3874,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc126_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.51b) { +// CHECK:STDOUT: specific @SubWith.loc135(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.e02) { // CHECK:STDOUT: %Result.patt.loc132_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc132_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc133_4.2 => constants.%U.patt.7a2 @@ -3699,18 +3882,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc134_36.1 => constants.%Int32 // CHECK:STDOUT: %SubWith.type.loc134_36.1 => constants.%SubWith.type.c81 // CHECK:STDOUT: %facet_type.loc134_20 => constants.%facet_type.44e -// CHECK:STDOUT: %.Self.loc134_38.1 => constants.%.Self.4d7 +// CHECK:STDOUT: %.Self.frozen.loc134_38.1 => constants.%.Self.frozen.db8 // CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.63f -// CHECK:STDOUT: %.Self.as_type.loc134_44.1 => constants.%.Self.as_type.07c +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.068 // CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.68f // CHECK:STDOUT: %assoc0 => constants.%assoc0.f11 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.566 -// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.ee1 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.1 => constants.%SubWith.lookup_impl_witness.32d +// CHECK:STDOUT: %impl.elem0.loc134_44.1 => constants.%impl.elem0.821 // CHECK:STDOUT: %Result.as_type.loc134_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.2c4 -// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.515 -// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.080 -// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.51b +// CHECK:STDOUT: %.Self => constants.%.Self.8ac +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_44.2 => constants.%SubWith.lookup_impl_witness.f41 +// CHECK:STDOUT: %impl.elem0.loc134_44.2 => constants.%impl.elem0.e31 +// CHECK:STDOUT: %facet_type.loc134_38 => constants.%facet_type.99d +// CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.b19 +// CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.e50 +// CHECK:STDOUT: %T.loc134_4.1 => constants.%facet_value.e02 // CHECK:STDOUT: %pattern_type.loc135_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc135_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc135_16.2 => constants.%result.patt.41f @@ -3741,7 +3927,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc137_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.738) { +// CHECK:STDOUT: specific @MulWith.loc146(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.dda) { // CHECK:STDOUT: %Result.patt.loc143_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc143_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc144_4.2 => constants.%U.patt.7a2 @@ -3749,18 +3935,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc145_36.1 => constants.%Int32 // CHECK:STDOUT: %MulWith.type.loc145_36.1 => constants.%MulWith.type.eeb // CHECK:STDOUT: %facet_type.loc145_20 => constants.%facet_type.ff6 -// CHECK:STDOUT: %.Self.loc145_38.1 => constants.%.Self.a5b +// CHECK:STDOUT: %.Self.frozen.loc145_38.1 => constants.%.Self.frozen.be6 // CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.3fe -// CHECK:STDOUT: %.Self.as_type.loc145_44.1 => constants.%.Self.as_type.646 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.aaf // CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.083 // CHECK:STDOUT: %assoc0 => constants.%assoc0.fc0 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.a28 -// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.d19 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.1 => constants.%MulWith.lookup_impl_witness.4cf +// CHECK:STDOUT: %impl.elem0.loc145_44.1 => constants.%impl.elem0.167 // CHECK:STDOUT: %Result.as_type.loc145_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.99c -// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.bb6 -// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.03e -// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.738 +// CHECK:STDOUT: %.Self => constants.%.Self.d4f +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_44.2 => constants.%MulWith.lookup_impl_witness.07b +// CHECK:STDOUT: %impl.elem0.loc145_44.2 => constants.%impl.elem0.0ea +// CHECK:STDOUT: %facet_type.loc145_38 => constants.%facet_type.5e8 +// CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.d24 +// CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.54a +// CHECK:STDOUT: %T.loc145_4.1 => constants.%facet_value.dda // CHECK:STDOUT: %pattern_type.loc146_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc146_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc146_16.2 => constants.%result.patt.41f @@ -3791,7 +3980,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc148_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.c2b) { +// CHECK:STDOUT: specific @DivWith.loc157(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.886) { // CHECK:STDOUT: %Result.patt.loc154_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc154_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc155_4.2 => constants.%U.patt.7a2 @@ -3799,18 +3988,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc156_36.1 => constants.%Int32 // CHECK:STDOUT: %DivWith.type.loc156_36.1 => constants.%DivWith.type.fb1 // CHECK:STDOUT: %facet_type.loc156_20 => constants.%facet_type.d41 -// CHECK:STDOUT: %.Self.loc156_38.1 => constants.%.Self.d8c +// CHECK:STDOUT: %.Self.frozen.loc156_38.1 => constants.%.Self.frozen.be1 // CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.11b -// CHECK:STDOUT: %.Self.as_type.loc156_44.1 => constants.%.Self.as_type.30d +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.88a // CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.725 // CHECK:STDOUT: %assoc0 => constants.%assoc0.2da -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.d3c -// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.282 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.1 => constants.%DivWith.lookup_impl_witness.385 +// CHECK:STDOUT: %impl.elem0.loc156_44.1 => constants.%impl.elem0.b42 // CHECK:STDOUT: %Result.as_type.loc156_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.7ce -// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.59a -// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.161 -// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.c2b +// CHECK:STDOUT: %.Self => constants.%.Self.13f +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_44.2 => constants.%DivWith.lookup_impl_witness.abd +// CHECK:STDOUT: %impl.elem0.loc156_44.2 => constants.%impl.elem0.1a6 +// CHECK:STDOUT: %facet_type.loc156_38 => constants.%facet_type.97b +// CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.6b7 +// CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.0b0 +// CHECK:STDOUT: %T.loc156_4.1 => constants.%facet_value.886 // CHECK:STDOUT: %pattern_type.loc157_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc157_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc157_16.2 => constants.%result.patt.41f @@ -3841,7 +4033,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc159_5.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.606) { +// CHECK:STDOUT: specific @ModWith.loc168(constants.%Destroy.facet.191, constants.%Destroy.facet.099, constants.%facet_value.20a) { // CHECK:STDOUT: %Result.patt.loc165_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc165_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %U.patt.loc166_4.2 => constants.%U.patt.7a2 @@ -3849,18 +4041,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.as_type.loc167_36.1 => constants.%Int32 // CHECK:STDOUT: %ModWith.type.loc167_36.1 => constants.%ModWith.type.253 // CHECK:STDOUT: %facet_type.loc167_20 => constants.%facet_type.ea8 -// CHECK:STDOUT: %.Self.loc167_38.1 => constants.%.Self.46e +// CHECK:STDOUT: %.Self.frozen.loc167_38.1 => constants.%.Self.frozen.4b6 // CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.2aa -// CHECK:STDOUT: %.Self.as_type.loc167_44.1 => constants.%.Self.as_type.7e4 +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.080 // CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.47d // CHECK:STDOUT: %assoc0 => constants.%assoc0.45c -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.b37 -// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.32c +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.1 => constants.%ModWith.lookup_impl_witness.fe2 +// CHECK:STDOUT: %impl.elem0.loc167_44.1 => constants.%impl.elem0.e60 // CHECK:STDOUT: %Result.as_type.loc167_54.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.c2e -// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.af40 -// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.cb9 -// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.606 +// CHECK:STDOUT: %.Self => constants.%.Self.008 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_44.2 => constants.%ModWith.lookup_impl_witness.557 +// CHECK:STDOUT: %impl.elem0.loc167_44.2 => constants.%impl.elem0.cdb +// CHECK:STDOUT: %facet_type.loc167_38 => constants.%facet_type.546 +// CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.5db +// CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.ed0 +// CHECK:STDOUT: %T.loc167_4.1 => constants.%facet_value.20a // CHECK:STDOUT: %pattern_type.loc168_16 => constants.%pattern_type.4aa // CHECK:STDOUT: %result.param_patt.loc168_16.2 => constants.%result.param_patt.1e1 // CHECK:STDOUT: %result.patt.loc168_16.2 => constants.%result.patt.41f @@ -4059,7 +4254,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %U.patt.loc243_19.2 => constants.%U.patt.d47 // CHECK:STDOUT: %U.loc243_19.1 => constants.%i16 // CHECK:STDOUT: %DivAssignWith.type.loc243_52.1 => constants.%DivAssignWith.type.081 -// CHECK:STDOUT: %pattern_type.loc243_29 => constants.%pattern_type.c97 +// CHECK:STDOUT: %pattern_type.loc243_29 => constants.%pattern_type.c970 // CHECK:STDOUT: %T.patt.loc243_29.2 => constants.%T.patt.35e // CHECK:STDOUT: %T.loc243_29.1 => constants.%DivAssignWith.facet.a72 // CHECK:STDOUT: %T.as_type.loc243_62.1 => constants.%Int16 @@ -4409,21 +4604,21 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %x.param_patt.loc284_26.2 => constants.%x.param_patt.678 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestNegate(constants.%Result, constants.%T.a9d) { +// CHECK:STDOUT: specific @TestNegate(constants.%Result, constants.%T.e01) { // CHECK:STDOUT: %Result.patt.loc292_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc292_9.1 => constants.%Result // CHECK:STDOUT: %Result.as_type.loc293_50.1 => constants.%Result.as_type -// CHECK:STDOUT: %facet_type => constants.%facet_type.b1d -// CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.540 -// CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.e96 -// CHECK:STDOUT: %T.loc293_4.1 => constants.%T.a9d +// CHECK:STDOUT: %facet_type => constants.%facet_type.352 +// CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.4c2 +// CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.c5b +// CHECK:STDOUT: %T.loc293_4.1 => constants.%T.e01 // CHECK:STDOUT: %pattern_type.loc294_11 => constants.%pattern_type.f4e485.2 // CHECK:STDOUT: %y.param_patt.loc294_11.2 => constants.%y.param_patt.023 // CHECK:STDOUT: %y.patt.loc294_11.2 => constants.%y.patt.053 -// CHECK:STDOUT: %T.as_type.loc294_24.1 => constants.%T.as_type.a98 -// CHECK:STDOUT: %pattern_type.loc294_22 => constants.%pattern_type.962a -// CHECK:STDOUT: %x.param_patt.loc294_22.2 => constants.%x.param_patt.4f4 -// CHECK:STDOUT: %x.patt.loc294_22.2 => constants.%x.patt.31e +// CHECK:STDOUT: %T.as_type.loc294_24.1 => constants.%T.as_type.684 +// CHECK:STDOUT: %pattern_type.loc294_22 => constants.%pattern_type.2dd +// CHECK:STDOUT: %x.param_patt.loc294_22.2 => constants.%x.param_patt.cbc +// CHECK:STDOUT: %x.patt.loc294_22.2 => constants.%x.patt.7fb // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @TestInc(constants.%Inc.facet.dd2) { @@ -4460,14 +4655,14 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc286_3.2 => constants.%Int32.Op.4dca31.19 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestNegate(constants.%Destroy.facet.191, constants.%facet_value.750) { +// CHECK:STDOUT: specific @TestNegate(constants.%Destroy.facet.191, constants.%facet_value.9cc) { // CHECK:STDOUT: %Result.patt.loc292_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc292_9.1 => constants.%Destroy.facet.191 // CHECK:STDOUT: %Result.as_type.loc293_50.1 => constants.%Int64 -// CHECK:STDOUT: %facet_type => constants.%facet_type.76b -// CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.61c -// CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.fd6 -// CHECK:STDOUT: %T.loc293_4.1 => constants.%facet_value.750 +// CHECK:STDOUT: %facet_type => constants.%facet_type.d8c +// CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.54c +// CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.16f +// CHECK:STDOUT: %T.loc293_4.1 => constants.%facet_value.9cc // CHECK:STDOUT: %pattern_type.loc294_11 => constants.%pattern_type.4aa // CHECK:STDOUT: %y.param_patt.loc294_11.2 => constants.%y.param_patt.a08 // CHECK:STDOUT: %y.patt.loc294_11.2 => constants.%y.patt.63b @@ -4492,14 +4687,14 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc296_3.4 => constants.%Int64.Op.4dca31.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestNegate(constants.%Destroy.facet.099, constants.%facet_value.42d) { +// CHECK:STDOUT: specific @TestNegate(constants.%Destroy.facet.099, constants.%facet_value.dcd) { // CHECK:STDOUT: %Result.patt.loc292_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc292_9.1 => constants.%Destroy.facet.099 // CHECK:STDOUT: %Result.as_type.loc293_50.1 => constants.%Int32 -// CHECK:STDOUT: %facet_type => constants.%facet_type.49d -// CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.57c -// CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.4fa -// CHECK:STDOUT: %T.loc293_4.1 => constants.%facet_value.42d +// CHECK:STDOUT: %facet_type => constants.%facet_type.021 +// CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.4cd +// CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.d74 +// CHECK:STDOUT: %T.loc293_4.1 => constants.%facet_value.dcd // CHECK:STDOUT: %pattern_type.loc294_11 => constants.%pattern_type.8b4 // CHECK:STDOUT: %y.param_patt.loc294_11.2 => constants.%y.param_patt.e0c // CHECK:STDOUT: %y.patt.loc294_11.2 => constants.%y.patt.0a3 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 01e70b3c0608..261ab532c01c 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 @@ -2568,48 +2568,48 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete] // CHECK:STDOUT: %Negate.impl_witness: = impl_witness imports.%Negate.impl_witness_table [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %Cpp.long, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.361: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.96f: type = fn_type_with_self_type %Negate.WithSelf.Op.type.361, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.c04: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.449: type = fn_type_with_self_type %Negate.WithSelf.Op.type.c04, %Negate.facet [concrete] // CHECK:STDOUT: %Cpp.long.as.Negate.impl.Op.type: type = fn_type @Cpp.long.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %Cpp.long.as.Negate.impl.Op: %Cpp.long.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.25e = value_binding_pattern b [concrete] // CHECK:STDOUT: %AddWith.type.5d0: type = facet_type <@AddWith, @AddWith(%Cpp.long)> [concrete] -// CHECK:STDOUT: %AddWith.impl_witness.7cd: = impl_witness imports.%AddWith.impl_witness_table.1a4 [concrete] -// CHECK:STDOUT: %AddWith.facet.a52: %AddWith.type.5d0 = facet_value %Cpp.long, (%AddWith.impl_witness.7cd) [concrete] -// CHECK:STDOUT: %AddWith.WithSelf.Op.type.9c7: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%Cpp.long, %AddWith.facet.a52) [concrete] -// CHECK:STDOUT: %.b1d: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.9c7, %AddWith.facet.a52 [concrete] +// CHECK:STDOUT: %AddWith.impl_witness.592: = impl_witness imports.%AddWith.impl_witness_table.2d2 [concrete] +// CHECK:STDOUT: %AddWith.facet.f73: %AddWith.type.5d0 = facet_value %Cpp.long, (%AddWith.impl_witness.592) [concrete] +// CHECK:STDOUT: %AddWith.WithSelf.Op.type.515: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%Cpp.long, %AddWith.facet.f73) [concrete] +// CHECK:STDOUT: %.b10: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.515, %AddWith.facet.f73 [concrete] // CHECK:STDOUT: %Cpp.long.as.AddWith.impl.Op.type.43d: type = fn_type @Cpp.long.as.AddWith.impl.Op.3 [concrete] // CHECK:STDOUT: %Cpp.long.as.AddWith.impl.Op.cc7: %Cpp.long.as.AddWith.impl.Op.type.43d = struct_value () [concrete] // CHECK:STDOUT: %c.patt: %pattern_type.25e = value_binding_pattern c [concrete] // CHECK:STDOUT: %SubWith.type.238: type = facet_type <@SubWith, @SubWith(%Cpp.long)> [concrete] -// CHECK:STDOUT: %SubWith.impl_witness.cb8: = impl_witness imports.%SubWith.impl_witness_table.2b1 [concrete] -// CHECK:STDOUT: %SubWith.facet.061: %SubWith.type.238 = facet_value %Cpp.long, (%SubWith.impl_witness.cb8) [concrete] -// CHECK:STDOUT: %SubWith.WithSelf.Op.type.6c7: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%Cpp.long, %SubWith.facet.061) [concrete] -// CHECK:STDOUT: %.19a: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.6c7, %SubWith.facet.061 [concrete] +// CHECK:STDOUT: %SubWith.impl_witness.471: = impl_witness imports.%SubWith.impl_witness_table.f6c [concrete] +// CHECK:STDOUT: %SubWith.facet.d61: %SubWith.type.238 = facet_value %Cpp.long, (%SubWith.impl_witness.471) [concrete] +// CHECK:STDOUT: %SubWith.WithSelf.Op.type.849: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%Cpp.long, %SubWith.facet.d61) [concrete] +// CHECK:STDOUT: %.e34: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.849, %SubWith.facet.d61 [concrete] // CHECK:STDOUT: %Cpp.long.as.SubWith.impl.Op.type.43d: type = fn_type @Cpp.long.as.SubWith.impl.Op.3 [concrete] // CHECK:STDOUT: %Cpp.long.as.SubWith.impl.Op.cc7: %Cpp.long.as.SubWith.impl.Op.type.43d = struct_value () [concrete] // CHECK:STDOUT: %d.patt: %pattern_type.25e = value_binding_pattern d [concrete] // CHECK:STDOUT: %MulWith.type.567: type = facet_type <@MulWith, @MulWith(%Cpp.long)> [concrete] -// CHECK:STDOUT: %MulWith.impl_witness.cca: = impl_witness imports.%MulWith.impl_witness_table.59d [concrete] -// CHECK:STDOUT: %MulWith.facet.f1b: %MulWith.type.567 = facet_value %Cpp.long, (%MulWith.impl_witness.cca) [concrete] -// CHECK:STDOUT: %MulWith.WithSelf.Op.type.762: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%Cpp.long, %MulWith.facet.f1b) [concrete] -// CHECK:STDOUT: %.efd: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.762, %MulWith.facet.f1b [concrete] +// CHECK:STDOUT: %MulWith.impl_witness.0db: = impl_witness imports.%MulWith.impl_witness_table.142 [concrete] +// CHECK:STDOUT: %MulWith.facet.e69: %MulWith.type.567 = facet_value %Cpp.long, (%MulWith.impl_witness.0db) [concrete] +// CHECK:STDOUT: %MulWith.WithSelf.Op.type.436: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%Cpp.long, %MulWith.facet.e69) [concrete] +// CHECK:STDOUT: %.293: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.436, %MulWith.facet.e69 [concrete] // CHECK:STDOUT: %Cpp.long.as.MulWith.impl.Op.type.43d: type = fn_type @Cpp.long.as.MulWith.impl.Op.3 [concrete] // CHECK:STDOUT: %Cpp.long.as.MulWith.impl.Op.cc7: %Cpp.long.as.MulWith.impl.Op.type.43d = struct_value () [concrete] // CHECK:STDOUT: %e.patt: %pattern_type.25e = value_binding_pattern e [concrete] // CHECK:STDOUT: %DivWith.type.204: type = facet_type <@DivWith, @DivWith(%Cpp.long)> [concrete] -// CHECK:STDOUT: %DivWith.impl_witness.454: = impl_witness imports.%DivWith.impl_witness_table.830 [concrete] -// CHECK:STDOUT: %DivWith.facet.fc1: %DivWith.type.204 = facet_value %Cpp.long, (%DivWith.impl_witness.454) [concrete] -// CHECK:STDOUT: %DivWith.WithSelf.Op.type.08f: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%Cpp.long, %DivWith.facet.fc1) [concrete] -// CHECK:STDOUT: %.002: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.08f, %DivWith.facet.fc1 [concrete] +// CHECK:STDOUT: %DivWith.impl_witness.d73: = impl_witness imports.%DivWith.impl_witness_table.2e2 [concrete] +// CHECK:STDOUT: %DivWith.facet.25d: %DivWith.type.204 = facet_value %Cpp.long, (%DivWith.impl_witness.d73) [concrete] +// CHECK:STDOUT: %DivWith.WithSelf.Op.type.197: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%Cpp.long, %DivWith.facet.25d) [concrete] +// CHECK:STDOUT: %.fd6: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.197, %DivWith.facet.25d [concrete] // CHECK:STDOUT: %Cpp.long.as.DivWith.impl.Op.type.43d: type = fn_type @Cpp.long.as.DivWith.impl.Op.3 [concrete] // CHECK:STDOUT: %Cpp.long.as.DivWith.impl.Op.cc7: %Cpp.long.as.DivWith.impl.Op.type.43d = struct_value () [concrete] // CHECK:STDOUT: %f.patt: %pattern_type.25e = value_binding_pattern f [concrete] // CHECK:STDOUT: %ModWith.type.d81: type = facet_type <@ModWith, @ModWith(%Cpp.long)> [concrete] -// CHECK:STDOUT: %ModWith.impl_witness.4d4: = impl_witness imports.%ModWith.impl_witness_table.316 [concrete] -// CHECK:STDOUT: %ModWith.facet.91d: %ModWith.type.d81 = facet_value %Cpp.long, (%ModWith.impl_witness.4d4) [concrete] -// CHECK:STDOUT: %ModWith.WithSelf.Op.type.50e: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%Cpp.long, %ModWith.facet.91d) [concrete] -// CHECK:STDOUT: %.83d: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.50e, %ModWith.facet.91d [concrete] +// CHECK:STDOUT: %ModWith.impl_witness.256: = impl_witness imports.%ModWith.impl_witness_table.411 [concrete] +// CHECK:STDOUT: %ModWith.facet.6d3: %ModWith.type.d81 = facet_value %Cpp.long, (%ModWith.impl_witness.256) [concrete] +// CHECK:STDOUT: %ModWith.WithSelf.Op.type.8f2: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%Cpp.long, %ModWith.facet.6d3) [concrete] +// CHECK:STDOUT: %.32a: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.8f2, %ModWith.facet.6d3 [concrete] // CHECK:STDOUT: %Cpp.long.as.ModWith.impl.Op.type.43d: type = fn_type @Cpp.long.as.ModWith.impl.Op.3 [concrete] // CHECK:STDOUT: %Cpp.long.as.ModWith.impl.Op.cc7: %Cpp.long.as.ModWith.impl.Op.type.43d = struct_value () [concrete] // CHECK:STDOUT: } @@ -2626,19 +2626,19 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %Negate.impl_witness_table = impl_witness_table (%Core.import_ref.099f8c.1, %Core.import_ref.9c3475.1), @Cpp.long.as.Negate.impl [concrete] // CHECK:STDOUT: %Core.import_ref.099f8c.4 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.9c3475.2: %Cpp.long.as.AddWith.impl.Op.type.43d = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.AddWith.impl.Op.cc7] -// CHECK:STDOUT: %AddWith.impl_witness_table.1a4 = impl_witness_table (%Core.import_ref.099f8c.4, %Core.import_ref.9c3475.2), @Cpp.long.as.AddWith.impl.458 [concrete] +// CHECK:STDOUT: %AddWith.impl_witness_table.2d2 = impl_witness_table (%Core.import_ref.099f8c.4, %Core.import_ref.9c3475.2), @Cpp.long.as.AddWith.impl.564 [concrete] // CHECK:STDOUT: %Core.import_ref.099f8c.7 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.9c3475.3: %Cpp.long.as.SubWith.impl.Op.type.43d = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.SubWith.impl.Op.cc7] -// CHECK:STDOUT: %SubWith.impl_witness_table.2b1 = impl_witness_table (%Core.import_ref.099f8c.7, %Core.import_ref.9c3475.3), @Cpp.long.as.SubWith.impl.22e [concrete] +// CHECK:STDOUT: %SubWith.impl_witness_table.f6c = impl_witness_table (%Core.import_ref.099f8c.7, %Core.import_ref.9c3475.3), @Cpp.long.as.SubWith.impl.19f [concrete] // CHECK:STDOUT: %Core.import_ref.099f8c.10 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.9c3475.4: %Cpp.long.as.MulWith.impl.Op.type.43d = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.MulWith.impl.Op.cc7] -// CHECK:STDOUT: %MulWith.impl_witness_table.59d = impl_witness_table (%Core.import_ref.099f8c.10, %Core.import_ref.9c3475.4), @Cpp.long.as.MulWith.impl.620 [concrete] +// CHECK:STDOUT: %MulWith.impl_witness_table.142 = impl_witness_table (%Core.import_ref.099f8c.10, %Core.import_ref.9c3475.4), @Cpp.long.as.MulWith.impl.fc8 [concrete] // CHECK:STDOUT: %Core.import_ref.099f8c.13 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.9c3475.5: %Cpp.long.as.DivWith.impl.Op.type.43d = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.DivWith.impl.Op.cc7] -// CHECK:STDOUT: %DivWith.impl_witness_table.830 = impl_witness_table (%Core.import_ref.099f8c.13, %Core.import_ref.9c3475.5), @Cpp.long.as.DivWith.impl.a64 [concrete] +// CHECK:STDOUT: %DivWith.impl_witness_table.2e2 = impl_witness_table (%Core.import_ref.099f8c.13, %Core.import_ref.9c3475.5), @Cpp.long.as.DivWith.impl.278 [concrete] // CHECK:STDOUT: %Core.import_ref.099f8c.16 = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.9c3475.6: %Cpp.long.as.ModWith.impl.Op.type.43d = import_ref Core//prelude/types/cpp/int, loc{{\d+_\d+}}, loaded [concrete = constants.%Cpp.long.as.ModWith.impl.Op.cc7] -// CHECK:STDOUT: %ModWith.impl_witness_table.316 = impl_witness_table (%Core.import_ref.099f8c.16, %Core.import_ref.9c3475.6), @Cpp.long.as.ModWith.impl.c53 [concrete] +// CHECK:STDOUT: %ModWith.impl_witness_table.411 = impl_witness_table (%Core.import_ref.099f8c.16, %Core.import_ref.9c3475.6), @Cpp.long.as.ModWith.impl.077 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ArithmeticHomogeneousLong() { @@ -2672,7 +2672,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: %y.patt: %pattern_type.25e = value_binding_pattern y [concrete = constants.%y.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %x.ref.loc11: %Cpp.long = name_ref x, %x -// CHECK:STDOUT: %impl.elem1.loc11: %.96f = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Cpp.long.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1.loc11: %.449 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%Cpp.long.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method.loc11: = bound_method %x.ref.loc11, %impl.elem1.loc11 // CHECK:STDOUT: %Cpp.long.as.Negate.impl.Op.call: init %Cpp.long = call %bound_method.loc11(%x.ref.loc11) // CHECK:STDOUT: %.loc11_28.1: %Cpp.long = value_of_initializer %Cpp.long.as.Negate.impl.Op.call @@ -2687,7 +2687,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.ref.loc12: %Cpp.long = name_ref x, %x // CHECK:STDOUT: %y.ref.loc12: %Cpp.long = name_ref y, %y -// CHECK:STDOUT: %impl.elem1.loc12: %.b1d = impl_witness_access constants.%AddWith.impl_witness.7cd, element1 [concrete = constants.%Cpp.long.as.AddWith.impl.Op.cc7] +// CHECK:STDOUT: %impl.elem1.loc12: %.b10 = impl_witness_access constants.%AddWith.impl_witness.592, element1 [concrete = constants.%Cpp.long.as.AddWith.impl.Op.cc7] // CHECK:STDOUT: %bound_method.loc12: = bound_method %x.ref.loc12, %impl.elem1.loc12 // CHECK:STDOUT: %Cpp.long.as.AddWith.impl.Op.call: init %Cpp.long = call %bound_method.loc12(%x.ref.loc12, %y.ref.loc12) // CHECK:STDOUT: %.loc12_30.1: %Cpp.long = value_of_initializer %Cpp.long.as.AddWith.impl.Op.call @@ -2702,7 +2702,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.ref.loc13: %Cpp.long = name_ref x, %x // CHECK:STDOUT: %y.ref.loc13: %Cpp.long = name_ref y, %y -// CHECK:STDOUT: %impl.elem1.loc13: %.19a = impl_witness_access constants.%SubWith.impl_witness.cb8, element1 [concrete = constants.%Cpp.long.as.SubWith.impl.Op.cc7] +// CHECK:STDOUT: %impl.elem1.loc13: %.e34 = impl_witness_access constants.%SubWith.impl_witness.471, element1 [concrete = constants.%Cpp.long.as.SubWith.impl.Op.cc7] // CHECK:STDOUT: %bound_method.loc13: = bound_method %x.ref.loc13, %impl.elem1.loc13 // CHECK:STDOUT: %Cpp.long.as.SubWith.impl.Op.call: init %Cpp.long = call %bound_method.loc13(%x.ref.loc13, %y.ref.loc13) // CHECK:STDOUT: %.loc13_30.1: %Cpp.long = value_of_initializer %Cpp.long.as.SubWith.impl.Op.call @@ -2717,7 +2717,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.ref.loc14: %Cpp.long = name_ref x, %x // CHECK:STDOUT: %y.ref.loc14: %Cpp.long = name_ref y, %y -// CHECK:STDOUT: %impl.elem1.loc14: %.efd = impl_witness_access constants.%MulWith.impl_witness.cca, element1 [concrete = constants.%Cpp.long.as.MulWith.impl.Op.cc7] +// CHECK:STDOUT: %impl.elem1.loc14: %.293 = impl_witness_access constants.%MulWith.impl_witness.0db, element1 [concrete = constants.%Cpp.long.as.MulWith.impl.Op.cc7] // CHECK:STDOUT: %bound_method.loc14: = bound_method %x.ref.loc14, %impl.elem1.loc14 // CHECK:STDOUT: %Cpp.long.as.MulWith.impl.Op.call: init %Cpp.long = call %bound_method.loc14(%x.ref.loc14, %y.ref.loc14) // CHECK:STDOUT: %.loc14_30.1: %Cpp.long = value_of_initializer %Cpp.long.as.MulWith.impl.Op.call @@ -2732,7 +2732,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.ref.loc15: %Cpp.long = name_ref x, %x // CHECK:STDOUT: %y.ref.loc15: %Cpp.long = name_ref y, %y -// CHECK:STDOUT: %impl.elem1.loc15: %.002 = impl_witness_access constants.%DivWith.impl_witness.454, element1 [concrete = constants.%Cpp.long.as.DivWith.impl.Op.cc7] +// CHECK:STDOUT: %impl.elem1.loc15: %.fd6 = impl_witness_access constants.%DivWith.impl_witness.d73, element1 [concrete = constants.%Cpp.long.as.DivWith.impl.Op.cc7] // CHECK:STDOUT: %bound_method.loc15: = bound_method %x.ref.loc15, %impl.elem1.loc15 // CHECK:STDOUT: %Cpp.long.as.DivWith.impl.Op.call: init %Cpp.long = call %bound_method.loc15(%x.ref.loc15, %y.ref.loc15) // CHECK:STDOUT: %.loc15_30.1: %Cpp.long = value_of_initializer %Cpp.long.as.DivWith.impl.Op.call @@ -2747,7 +2747,7 @@ fn CopyUnsignedLong() { // CHECK:STDOUT: } // CHECK:STDOUT: %x.ref.loc16: %Cpp.long = name_ref x, %x // CHECK:STDOUT: %y.ref.loc16: %Cpp.long = name_ref y, %y -// CHECK:STDOUT: %impl.elem1.loc16: %.83d = impl_witness_access constants.%ModWith.impl_witness.4d4, element1 [concrete = constants.%Cpp.long.as.ModWith.impl.Op.cc7] +// CHECK:STDOUT: %impl.elem1.loc16: %.32a = impl_witness_access constants.%ModWith.impl_witness.256, element1 [concrete = constants.%Cpp.long.as.ModWith.impl.Op.cc7] // CHECK:STDOUT: %bound_method.loc16: = bound_method %x.ref.loc16, %impl.elem1.loc16 // CHECK:STDOUT: %Cpp.long.as.ModWith.impl.Op.call: init %Cpp.long = call %bound_method.loc16(%x.ref.loc16, %y.ref.loc16) // CHECK:STDOUT: %.loc16_30.1: %Cpp.long = value_of_initializer %Cpp.long.as.ModWith.impl.Op.call diff --git a/toolchain/check/testdata/interop/cpp/range_for.carbon b/toolchain/check/testdata/interop/cpp/range_for.carbon index 3797dffcfc79..822a833b9093 100644 --- a/toolchain/check/testdata/interop/cpp/range_for.carbon +++ b/toolchain/check/testdata/interop/cpp/range_for.carbon @@ -726,17 +726,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Optional.HasValue.6cd: %Optional.HasValue.type.e9e = struct_value () [symbolic] // CHECK:STDOUT: %T.283: %facet_type.f48 = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.d50: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.029: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.cb5: %T.as_type.as.OptionalStorage.impl.Get.type.029 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.4bc: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.dc2: %T.as_type.as.OptionalStorage.impl.Has.type.4bc = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.800: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.e83: %T.as_type.as.OptionalStorage.impl.Some.type.800 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.300: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.f54: %T.as_type.as.OptionalStorage.impl.None.type.300 = struct_value () [symbolic] -// CHECK:STDOUT: %.Self.35d: %Iterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.b37: = lookup_impl_witness %.Self.35d, @Iterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.903: %facet_type.f48 = impl_witness_access %Iterate.lookup_impl_witness.b37, element0 [symbolic_self] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.671: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.a54: %T.as_type.as.OptionalStorage.impl.Get.type.671 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.d76: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.aa4: %T.as_type.as.OptionalStorage.impl.Has.type.d76 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.973: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.c3a: %T.as_type.as.OptionalStorage.impl.Some.type.973 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.f62: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.faf: %T.as_type.as.OptionalStorage.impl.None.type.f62 = struct_value () [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %N.fe9: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %Int.67af24.1: type = class_type @Int, @Int(%N.fe9) [symbolic] @@ -749,14 +746,17 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Int.as.Copy.impl.Op.5e0: %Int.as.Copy.impl.Op.type.ac8 = struct_value () [symbolic] // CHECK:STDOUT: %Copy.impl_witness.0e0: = impl_witness imports.%Copy.impl_witness_table.367, @Int.as.Copy.impl(%int_32) [concrete] // CHECK:STDOUT: %facet_value.ba2: %facet_type.f48 = facet_value %i32, (%custom_witness.df9cc1.2, %Copy.impl_witness.0e0) [concrete] -// CHECK:STDOUT: %Iterate_where.type.8bc: type = facet_type <@Iterate where %impl.elem0.903 = %facet_value.ba2> [concrete] -// CHECK:STDOUT: %pattern_type.e3e: type = pattern_type %Iterate_where.type.8bc [concrete] -// CHECK:STDOUT: %R.patt.860: %pattern_type.e3e = symbolic_binding_pattern R, 0 [symbolic] -// CHECK:STDOUT: %R.891: %Iterate_where.type.8bc = symbolic_binding R, 0 [symbolic] -// CHECK:STDOUT: %R.as_type.67d: type = facet_access_type %R.891 [symbolic] -// CHECK:STDOUT: %pattern_type.e21: type = pattern_type %R.as_type.67d [symbolic] -// CHECK:STDOUT: %r.param_patt.fdd: %pattern_type.e21 = value_param_pattern [symbolic] -// CHECK:STDOUT: %r.patt.939: %pattern_type.e21 = at_binding_pattern r, %r.param_patt.fdd [symbolic] +// CHECK:STDOUT: %.Self.500: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.1d8: = lookup_impl_witness %.Self.500, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.294: %facet_type.f48 = impl_witness_access %Iterate.lookup_impl_witness.1d8, element0 [symbolic_self] +// CHECK:STDOUT: %Iterate_where.type.ec1: type = facet_type <@Iterate where %impl.elem0.294 = %facet_value.ba2> [concrete] +// CHECK:STDOUT: %pattern_type.a4d: type = pattern_type %Iterate_where.type.ec1 [concrete] +// CHECK:STDOUT: %R.patt.bbc: %pattern_type.a4d = symbolic_binding_pattern R, 0 [symbolic] +// CHECK:STDOUT: %R.869: %Iterate_where.type.ec1 = symbolic_binding R, 0 [symbolic] +// CHECK:STDOUT: %R.as_type.a02: type = facet_access_type %R.869 [symbolic] +// CHECK:STDOUT: %pattern_type.b2da: type = pattern_type %R.as_type.a02 [symbolic] +// CHECK:STDOUT: %r.param_patt.774: %pattern_type.b2da = value_param_pattern [symbolic] +// CHECK:STDOUT: %r.patt.54b: %pattern_type.b2da = at_binding_pattern r, %r.param_patt.774 [symbolic] // CHECK:STDOUT: %ImplicitAs.type.914: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic] // CHECK:STDOUT: %Int.67af24.2: type = class_type @Int, @Int(%To) [symbolic] @@ -766,13 +766,13 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %From.as_type.as.ImplicitAs.impl.Convert.643: %From.as_type.as.ImplicitAs.impl.Convert.type.7fa = struct_value () [symbolic] // CHECK:STDOUT: %i.patt: %pattern_type.6b6 = value_binding_pattern i [concrete] // CHECK:STDOUT: %CppRangeForIterate.type: type = facet_type <@CppRangeForIterate> [concrete] -// CHECK:STDOUT: %.Self.6bd: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.143: = lookup_impl_witness %.Self.6bd, @CppRangeForIterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.109: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element0 [symbolic_self] -// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.712: = lookup_impl_witness %impl.elem0.109, @CppUnsafeDeref [symbolic_self] -// CHECK:STDOUT: %impl.elem0.56a: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.712, element0 [symbolic_self] -// CHECK:STDOUT: %impl.elem1.222: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element1 [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.109 impls @Destroy and %impl.elem0.109 impls @Copy and %impl.elem0.109 impls @CppUnsafeDeref and %impl.elem0.109 impls @EqWith, @EqWith(%impl.elem1.222) and %impl.elem0.109 impls @Inc and %impl.elem0.56a impls @Destroy and %impl.elem0.56a impls @Copy and %impl.elem1.222 impls @Destroy and %impl.elem1.222 impls @Copy> [concrete] +// CHECK:STDOUT: %.Self.aed: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.f6b: = lookup_impl_witness %.Self.aed, @CppRangeForIterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b73: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element0 [symbolic_self] +// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.595: = lookup_impl_witness %impl.elem0.b73, @CppUnsafeDeref [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a2f: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.595, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.228: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element1 [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.b73 impls @Destroy and %impl.elem0.b73 impls @Copy and %impl.elem0.b73 impls @CppUnsafeDeref and %impl.elem0.b73 impls @EqWith, @EqWith(%impl.elem1.228) and %impl.elem0.b73 impls @Inc and %impl.elem0.a2f impls @Destroy and %impl.elem0.a2f impls @Copy and %impl.elem1.228 impls @Destroy and %impl.elem1.228 impls @Copy> [concrete] // CHECK:STDOUT: %R.39b: %CppRangeForIterate_where.type.1c721f.1 = symbolic_binding R, 0 [symbolic] // CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.7e2712.2: = lookup_impl_witness %R.39b, @CppRangeForIterate [symbolic] // CHECK:STDOUT: %impl.elem1.7a0bff.2: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.7e2712.2, element1 [symbolic] @@ -785,37 +785,37 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.lookup_impl_witness.ec3: = lookup_impl_witness %impl.elem0.af7, @Destroy [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.a7a: = lookup_impl_witness %impl.elem0.af7, @Copy [symbolic] // CHECK:STDOUT: %facet_value.194: %facet_type.f48 = facet_value %impl.elem0.af7, (%Destroy.lookup_impl_witness.ec3, %Copy.lookup_impl_witness.a7a) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.1f7: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.0d6: %R.as_type.as.Iterate.impl.Next.type.1f7 = struct_value () [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.36f: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.29b: %R.as_type.as.Iterate.impl.NewCursor.type.36f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.c86: = lookup_impl_witness %R.891, @Iterate [symbolic] -// CHECK:STDOUT: %Iterate.facet.bbb: %Iterate.type = facet_value %R.as_type.67d, (%Iterate.lookup_impl_witness.c86) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.d2b: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.bbb) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.28b: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.bbb) [symbolic] -// CHECK:STDOUT: %.3e2: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.d2b, %Iterate.facet.bbb [symbolic] -// CHECK:STDOUT: %impl.elem2.f53: %.3e2 = impl_witness_access %Iterate.lookup_impl_witness.c86, element2 [symbolic] -// CHECK:STDOUT: %impl.elem1.d31: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.c86, element1 [symbolic] -// CHECK:STDOUT: %as_type.ca2: type = facet_access_type %impl.elem1.d31 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.87a: = specific_impl_function %impl.elem2.f53, @Iterate.WithSelf.NewCursor(%Iterate.facet.bbb) [symbolic] -// CHECK:STDOUT: %ptr.3b4: type = ptr_type %as_type.ca2 [symbolic] -// CHECK:STDOUT: %.a8b: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.28b, %Iterate.facet.bbb [symbolic] -// CHECK:STDOUT: %impl.elem3.9c3: %.a8b = impl_witness_access %Iterate.lookup_impl_witness.c86, element3 [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.d8f: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c6d: %R.as_type.as.Iterate.impl.Next.type.d8f = struct_value () [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.127: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.627: %R.as_type.as.Iterate.impl.NewCursor.type.127 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.18b: = lookup_impl_witness %R.869, @Iterate [symbolic] +// CHECK:STDOUT: %Iterate.facet.353: %Iterate.type = facet_value %R.as_type.a02, (%Iterate.lookup_impl_witness.18b) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.8fb: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.353) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.830: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.353) [symbolic] +// CHECK:STDOUT: %.985: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.8fb, %Iterate.facet.353 [symbolic] +// CHECK:STDOUT: %impl.elem2.8ec: %.985 = impl_witness_access %Iterate.lookup_impl_witness.18b, element2 [symbolic] +// CHECK:STDOUT: %impl.elem1.295: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.18b, element1 [symbolic] +// CHECK:STDOUT: %as_type.c8a: type = facet_access_type %impl.elem1.295 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.9ca: = specific_impl_function %impl.elem2.8ec, @Iterate.WithSelf.NewCursor(%Iterate.facet.353) [symbolic] +// CHECK:STDOUT: %ptr.2ef: type = ptr_type %as_type.c8a [symbolic] +// CHECK:STDOUT: %.f86: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.830, %Iterate.facet.353 [symbolic] +// CHECK:STDOUT: %impl.elem3.5f7: %.f86 = impl_witness_access %Iterate.lookup_impl_witness.18b, element3 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.970: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%facet_value.ba2) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.a49: = impl_witness imports.%OptionalStorage.impl_witness_table.655, @T.as_type.as.OptionalStorage.impl(%facet_value.ba2) [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.172: %OptionalStorage.type = facet_value %i32, (%OptionalStorage.impl_witness.a49) [concrete] -// CHECK:STDOUT: %Optional.e28: type = class_type @Optional, @Optional(%OptionalStorage.facet.172) [concrete] -// CHECK:STDOUT: %specific_impl_fn.ab2: = specific_impl_function %impl.elem3.9c3, @Iterate.WithSelf.Next(%Iterate.facet.bbb) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.c6d: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.172) [concrete] -// CHECK:STDOUT: %Optional.HasValue.89b: %Optional.HasValue.type.c6d = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Get.type.7e6: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.172) [concrete] -// CHECK:STDOUT: %Optional.Get.722: %Optional.Get.type.7e6 = struct_value () [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.57d: = impl_witness imports.%OptionalStorage.impl_witness_table.199, @T.as_type.as.OptionalStorage.impl(%facet_value.ba2) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.563: %OptionalStorage.type = facet_value %i32, (%OptionalStorage.impl_witness.57d) [concrete] +// CHECK:STDOUT: %Optional.a23: type = class_type @Optional, @Optional(%OptionalStorage.facet.563) [concrete] +// CHECK:STDOUT: %specific_impl_fn.9a8: = specific_impl_function %impl.elem3.5f7, @Iterate.WithSelf.Next(%Iterate.facet.353) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.560: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.563) [concrete] +// CHECK:STDOUT: %Optional.HasValue.bef: %Optional.HasValue.type.560 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.11a: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.563) [concrete] +// CHECK:STDOUT: %Optional.Get.0ee: %Optional.Get.type.11a = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.d07318.2: %Destroy.type = facet_value %i32, (%custom_witness.df9cc1.2) [concrete] // CHECK:STDOUT: %MaybeUnformed.023: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.d07318.2) [concrete] // CHECK:STDOUT: %.1d6a7: type = maybe_unformed_type %i32 [concrete] // CHECK:STDOUT: %struct_type.value.has_value.ad0: type = struct_type {.value: %MaybeUnformed.023, .has_value: bool} [concrete] -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.89b, @Optional.HasValue(%OptionalStorage.facet.172) [concrete] -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.722, @Optional.Get(%OptionalStorage.facet.172) [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.bef, @Optional.HasValue(%OptionalStorage.facet.563) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.0ee, @Optional.Get(%OptionalStorage.facet.563) [concrete] // CHECK:STDOUT: %AddAssignWith.type.941: type = facet_type <@AddAssignWith, @AddAssignWith(%i32)> [concrete] // CHECK:STDOUT: %ImplicitAs.type.f7de31.2: type = facet_type <@ImplicitAs, @ImplicitAs(%Int.67af24.1)> [symbolic] // CHECK:STDOUT: %U.4e6: %ImplicitAs.type.f7de31.2 = symbolic_binding U, 1 [symbolic] @@ -825,29 +825,29 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.45b360.2: %Int.as.AddAssignWith.impl.Op.type.a58fbe.2 = struct_value () [symbolic] // CHECK:STDOUT: %facet_type.138: type = facet_type <@IntFitsIn, @IntFitsIn(%i32) & @AnyInt> [concrete] // CHECK:STDOUT: %custom_witness.36a: = custom_witness (), @IntFitsIn, @IntFitsIn(%i32) [concrete] -// CHECK:STDOUT: %Int.as.AnyInt.impl.AsInt.type.324: type = fn_type @Int.as.AnyInt.impl.AsInt, @Int.as.AnyInt.impl(%N.fe9) [symbolic] -// CHECK:STDOUT: %Int.as.AnyInt.impl.AsInt.ec6: %Int.as.AnyInt.impl.AsInt.type.324 = struct_value () [symbolic] -// CHECK:STDOUT: %AnyInt.impl_witness.b8b: = impl_witness imports.%AnyInt.impl_witness_table, @Int.as.AnyInt.impl(%int_32) [concrete] -// CHECK:STDOUT: %facet_value.0ec: %facet_type.138 = facet_value %i32, (%custom_witness.36a, %AnyInt.impl_witness.b8b) [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.577: = impl_witness imports.%ImplicitAs.impl_witness_table.3b9, @From.as_type.as.ImplicitAs.impl(%int_32, %facet_value.0ec) [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.eaa: %ImplicitAs.type.914 = facet_value %i32, (%ImplicitAs.impl_witness.577) [concrete] -// CHECK:STDOUT: %AddAssignWith.impl_witness.22e: = impl_witness imports.%AddAssignWith.impl_witness_table, @Int.as.AddAssignWith.impl(%int_32, %ImplicitAs.facet.eaa) [concrete] -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.73460a.1: type = fn_type @Int.as.AddAssignWith.impl.Op.2, @Int.as.AddAssignWith.impl(%int_32, %ImplicitAs.facet.eaa) [concrete] -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.00e760.1: %Int.as.AddAssignWith.impl.Op.type.73460a.1 = struct_value () [concrete] -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.73460a.2: type = fn_type @Int.as.AddAssignWith.impl.Op.1, @Int.as.AddAssignWith.impl(%int_32, %ImplicitAs.facet.eaa) [concrete] -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.00e760.2: %Int.as.AddAssignWith.impl.Op.type.73460a.2 = struct_value () [concrete] -// CHECK:STDOUT: %AddAssignWith.facet.d42: %AddAssignWith.type.941 = facet_value %i32, (%AddAssignWith.impl_witness.22e) [concrete] -// CHECK:STDOUT: %AddAssignWith.WithSelf.Op.type.f66: type = fn_type @AddAssignWith.WithSelf.Op, @AddAssignWith.WithSelf(%i32, %AddAssignWith.facet.d42) [concrete] -// CHECK:STDOUT: %.b28: type = fn_type_with_self_type %AddAssignWith.WithSelf.Op.type.f66, %AddAssignWith.facet.d42 [concrete] -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.b14d9d.1: = specific_function %Int.as.AddAssignWith.impl.Op.00e760.2, @Int.as.AddAssignWith.impl.Op.1(%int_32, %ImplicitAs.facet.eaa) [concrete] -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.b14d9d.2: = specific_function %Int.as.AddAssignWith.impl.Op.00e760.1, @Int.as.AddAssignWith.impl.Op.2(%int_32, %ImplicitAs.facet.eaa) [concrete] +// CHECK:STDOUT: %Int.as.AnyInt.impl.AsInt.type.80b: type = fn_type @Int.as.AnyInt.impl.AsInt, @Int.as.AnyInt.impl(%N.fe9) [symbolic] +// CHECK:STDOUT: %Int.as.AnyInt.impl.AsInt.23f: %Int.as.AnyInt.impl.AsInt.type.80b = struct_value () [symbolic] +// CHECK:STDOUT: %AnyInt.impl_witness.76c: = impl_witness imports.%AnyInt.impl_witness_table, @Int.as.AnyInt.impl(%int_32) [concrete] +// CHECK:STDOUT: %facet_value.6b8: %facet_type.138 = facet_value %i32, (%custom_witness.36a, %AnyInt.impl_witness.76c) [concrete] +// CHECK:STDOUT: %ImplicitAs.impl_witness.03f: = impl_witness imports.%ImplicitAs.impl_witness_table.3b9, @From.as_type.as.ImplicitAs.impl(%int_32, %facet_value.6b8) [concrete] +// CHECK:STDOUT: %ImplicitAs.facet.640: %ImplicitAs.type.914 = facet_value %i32, (%ImplicitAs.impl_witness.03f) [concrete] +// CHECK:STDOUT: %AddAssignWith.impl_witness.ccf: = impl_witness imports.%AddAssignWith.impl_witness_table, @Int.as.AddAssignWith.impl(%int_32, %ImplicitAs.facet.640) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.a94901.1: type = fn_type @Int.as.AddAssignWith.impl.Op.2, @Int.as.AddAssignWith.impl(%int_32, %ImplicitAs.facet.640) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.83e130.1: %Int.as.AddAssignWith.impl.Op.type.a94901.1 = struct_value () [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.type.a94901.2: type = fn_type @Int.as.AddAssignWith.impl.Op.1, @Int.as.AddAssignWith.impl(%int_32, %ImplicitAs.facet.640) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.83e130.2: %Int.as.AddAssignWith.impl.Op.type.a94901.2 = struct_value () [concrete] +// CHECK:STDOUT: %AddAssignWith.facet.b9a: %AddAssignWith.type.941 = facet_value %i32, (%AddAssignWith.impl_witness.ccf) [concrete] +// CHECK:STDOUT: %AddAssignWith.WithSelf.Op.type.51d: type = fn_type @AddAssignWith.WithSelf.Op, @AddAssignWith.WithSelf(%i32, %AddAssignWith.facet.b9a) [concrete] +// CHECK:STDOUT: %.98a: type = fn_type_with_self_type %AddAssignWith.WithSelf.Op.type.51d, %AddAssignWith.facet.b9a [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.80c75c.1: = specific_function %Int.as.AddAssignWith.impl.Op.83e130.2, @Int.as.AddAssignWith.impl.Op.1(%int_32, %ImplicitAs.facet.640) [concrete] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.80c75c.2: = specific_function %Int.as.AddAssignWith.impl.Op.83e130.1, @Int.as.AddAssignWith.impl.Op.2(%int_32, %ImplicitAs.facet.640) [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.9: type = fn_type @Destroy.Op.loc34_19.6 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.9: %Destroy.Op.type.1d8f74.9 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.5d5: = lookup_impl_witness %impl.elem1.d31, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type.515: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.d31) [symbolic] -// CHECK:STDOUT: %.94f: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.515, %impl.elem1.d31 [symbolic] -// CHECK:STDOUT: %impl.elem0.e52: %.94f = impl_witness_access %Destroy.lookup_impl_witness.5d5, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.12e: = specific_impl_function %impl.elem0.e52, @Destroy.WithSelf.Op(%impl.elem1.d31) [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.d26: = lookup_impl_witness %impl.elem1.295, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type.71c: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.295) [symbolic] +// CHECK:STDOUT: %.fa0: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.71c, %impl.elem1.295 [symbolic] +// CHECK:STDOUT: %impl.elem0.544: %.fa0 = impl_witness_access %Destroy.lookup_impl_witness.d26, element0 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.fa9: = specific_impl_function %impl.elem0.544, @Destroy.WithSelf.Op(%impl.elem1.295) [symbolic] // CHECK:STDOUT: %MutableRange: type = class_type @MutableRange [concrete] // CHECK:STDOUT: %pattern_type.e635: type = pattern_type %MutableRange [concrete] // CHECK:STDOUT: %ConstRange: type = class_type @ConstRange [concrete] @@ -883,13 +883,13 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.Op.1a2547.10: %Destroy.Op.type.1d8f74.10 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.10: = custom_witness (%Destroy.Op.1a2547.10), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.30f: %Destroy.type = facet_value %tuple.type.508, (%custom_witness.df9cc1.10) [concrete] -// CHECK:STDOUT: %Iterate.impl_witness.cea: = impl_witness imports.%Iterate.impl_witness_table.344, @R.as_type.as.Iterate.impl(%facet_value.cd6) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.f1f: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.cd6) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.8d2: %R.as_type.as.Iterate.impl.NewCursor.type.f1f = struct_value () [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.dba: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.cd6) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.34d: %R.as_type.as.Iterate.impl.Next.type.dba = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet.ffb: %Iterate.type = facet_value %MutableRange, (%Iterate.impl_witness.cea) [concrete] -// CHECK:STDOUT: %facet_value.879: %Iterate_where.type.8bc = facet_value %MutableRange, (%Iterate.impl_witness.cea) [concrete] +// CHECK:STDOUT: %Iterate.impl_witness.b92: = impl_witness imports.%Iterate.impl_witness_table.ccd, @R.as_type.as.Iterate.impl(%facet_value.cd6) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.c9f: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.cd6) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.d98: %R.as_type.as.Iterate.impl.NewCursor.type.c9f = struct_value () [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.ad0: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.cd6) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.d29: %R.as_type.as.Iterate.impl.Next.type.ad0 = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet.b2e: %Iterate.type = facet_value %MutableRange, (%Iterate.impl_witness.b92) [concrete] +// CHECK:STDOUT: %facet_value.8de: %Iterate_where.type.ec1 = facet_value %MutableRange, (%Iterate.impl_witness.b92) [concrete] // CHECK:STDOUT: %r.param_patt.c79: %pattern_type.e635 = value_param_pattern [concrete] // CHECK:STDOUT: %r.patt.16f: %pattern_type.e635 = at_binding_pattern r, %r.param_patt.c79 [concrete] // CHECK:STDOUT: %Iterator.260: type = class_type @Iterator.2 [concrete] @@ -921,29 +921,29 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.Op.1a2547.11: %Destroy.Op.type.1d8f74.11 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.11: = custom_witness (%Destroy.Op.1a2547.11), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.e4c: %Destroy.type = facet_value %tuple.type.69f, (%custom_witness.df9cc1.11) [concrete] -// CHECK:STDOUT: %Iterate.impl_witness.12a: = impl_witness imports.%Iterate.impl_witness_table.344, @R.as_type.as.Iterate.impl(%facet_value.e88) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.fe1: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.e88) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.2f6: %R.as_type.as.Iterate.impl.NewCursor.type.fe1 = struct_value () [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.f9d: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.e88) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.393: %R.as_type.as.Iterate.impl.Next.type.f9d = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet.5eb: %Iterate.type = facet_value %ConstRange, (%Iterate.impl_witness.12a) [concrete] -// CHECK:STDOUT: %facet_value.740: %Iterate_where.type.8bc = facet_value %ConstRange, (%Iterate.impl_witness.12a) [concrete] +// CHECK:STDOUT: %Iterate.impl_witness.a61: = impl_witness imports.%Iterate.impl_witness_table.ccd, @R.as_type.as.Iterate.impl(%facet_value.e88) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.50d: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.e88) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.0b2: %R.as_type.as.Iterate.impl.NewCursor.type.50d = struct_value () [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.121: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.e88) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.bec: %R.as_type.as.Iterate.impl.Next.type.121 = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet.d83: %Iterate.type = facet_value %ConstRange, (%Iterate.impl_witness.a61) [concrete] +// CHECK:STDOUT: %facet_value.227: %Iterate_where.type.ec1 = facet_value %ConstRange, (%Iterate.impl_witness.a61) [concrete] // CHECK:STDOUT: %r.param_patt.83e: %pattern_type.0ba = value_param_pattern [concrete] // CHECK:STDOUT: %r.patt.116: %pattern_type.0ba = at_binding_pattern r, %r.param_patt.83e [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.dcb: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.ffb) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.30e: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.ffb) [concrete] -// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.dcb, %Iterate.facet.ffb [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn.bf1: = specific_function %R.as_type.as.Iterate.impl.NewCursor.8d2, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.cd6) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.7db: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.b2e) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.c02: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.b2e) [concrete] +// CHECK:STDOUT: %.55e: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.7db, %Iterate.facet.b2e [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn.bad: = specific_function %R.as_type.as.Iterate.impl.NewCursor.d98, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.cd6) [concrete] // CHECK:STDOUT: %ptr.45c: type = ptr_type %tuple.type.508 [concrete] -// CHECK:STDOUT: %.d23: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.30e, %Iterate.facet.ffb [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn.dd5: = specific_function %R.as_type.as.Iterate.impl.Next.34d, @R.as_type.as.Iterate.impl.Next(%facet_value.cd6) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.ab5: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.5eb) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.e25: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.5eb) [concrete] -// CHECK:STDOUT: %.744: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.ab5, %Iterate.facet.5eb [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn.a05: = specific_function %R.as_type.as.Iterate.impl.NewCursor.2f6, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.e88) [concrete] +// CHECK:STDOUT: %.d4b: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.c02, %Iterate.facet.b2e [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn.4ca: = specific_function %R.as_type.as.Iterate.impl.Next.d29, @R.as_type.as.Iterate.impl.Next(%facet_value.cd6) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.825: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.d83) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.d4a: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.d83) [concrete] +// CHECK:STDOUT: %.e89c: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.825, %Iterate.facet.d83 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn.e65: = specific_function %R.as_type.as.Iterate.impl.NewCursor.0b2, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.e88) [concrete] // CHECK:STDOUT: %ptr.c5c: type = ptr_type %tuple.type.69f [concrete] -// CHECK:STDOUT: %.03b: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.e25, %Iterate.facet.5eb [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn.4cc: = specific_function %R.as_type.as.Iterate.impl.Next.393, @R.as_type.as.Iterate.impl.Next(%facet_value.e88) [concrete] +// CHECK:STDOUT: %.f6d: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.d4a, %Iterate.facet.d83 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn.bf1: = specific_function %R.as_type.as.Iterate.impl.Next.bec, @R.as_type.as.Iterate.impl.Next(%facet_value.e88) [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.7ec: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.e4c) [concrete] // CHECK:STDOUT: %.0e7: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.7ec, %Destroy.facet.e4c [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.c6c: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.30f) [concrete] @@ -956,105 +956,105 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Core.import_ref.bb6: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.e9e) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6cd)] // CHECK:STDOUT: %Core.import_ref.daba: @Optional.%Optional.Get.type (%Optional.Get.type.bb9) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.fa1)] // CHECK:STDOUT: %Core.import_ref.0c6: type = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%DefaultOptionalStorage (constants.%DefaultOptionalStorage.d50)] -// CHECK:STDOUT: %Core.import_ref.f4f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.300) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.f54)] -// CHECK:STDOUT: %Core.import_ref.18f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.800) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.e83)] -// CHECK:STDOUT: %Core.import_ref.c68: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.4bc) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.dc2)] -// CHECK:STDOUT: %Core.import_ref.a83: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.029) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.cb5)] -// CHECK:STDOUT: %Core.import_ref.aaa = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.655 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.f4f, %Core.import_ref.18f, %Core.import_ref.c68, %Core.import_ref.a83, %Core.import_ref.aaa), @T.as_type.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.6d6: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.f62) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.faf)] +// CHECK:STDOUT: %Core.import_ref.6f3: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.973) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.c3a)] +// CHECK:STDOUT: %Core.import_ref.af2: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.d76) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.aa4)] +// CHECK:STDOUT: %Core.import_ref.e31: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.671) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.a54)] +// CHECK:STDOUT: %Core.import_ref.cea = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.199 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.6d6, %Core.import_ref.6f3, %Core.import_ref.af2, %Core.import_ref.e31, %Core.import_ref.cea), @T.as_type.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %Core.import_ref.cd6: @Int.as.Copy.impl.%Int.as.Copy.impl.Op.type (%Int.as.Copy.impl.Op.type.ac8) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.Copy.impl.%Int.as.Copy.impl.Op (constants.%Int.as.Copy.impl.Op.5e0)] // CHECK:STDOUT: %Copy.impl_witness_table.367 = impl_witness_table (%Core.import_ref.cd6), @Int.as.Copy.impl [concrete] // CHECK:STDOUT: %Core.import_ref.2a4: @From.as_type.as.ImplicitAs.impl.%From.as_type.as.ImplicitAs.impl.Convert.type (%From.as_type.as.ImplicitAs.impl.Convert.type.7fa) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @From.as_type.as.ImplicitAs.impl.%From.as_type.as.ImplicitAs.impl.Convert (constants.%From.as_type.as.ImplicitAs.impl.Convert.643)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.3b9 = impl_witness_table (%Core.import_ref.2a4), @From.as_type.as.ImplicitAs.impl [concrete] // CHECK:STDOUT: %Core.import_ref.301: %facet_type.f48 = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%facet_value (constants.%facet_value.194)] // CHECK:STDOUT: %Core.import_ref.89f: %Destroy.type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%Destroy.facet (constants.%Destroy.facet.593)] -// CHECK:STDOUT: %Core.import_ref.3e6: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.36f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.29b)] -// CHECK:STDOUT: %Core.import_ref.85d: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.1f7) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.0d6)] -// CHECK:STDOUT: %Iterate.impl_witness_table.344 = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.3e6, %Core.import_ref.85d), @R.as_type.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.940: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.127) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.627)] +// CHECK:STDOUT: %Core.import_ref.fe7: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.d8f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.c6d)] +// CHECK:STDOUT: %Iterate.impl_witness_table.ccd = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.940, %Core.import_ref.fe7), @R.as_type.as.Iterate.impl [concrete] // CHECK:STDOUT: %Core.import_ref.098: @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.type.2 (%Int.as.AddAssignWith.impl.Op.type.a58fbe.1) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.2 (constants.%Int.as.AddAssignWith.impl.Op.45b360.1)] // CHECK:STDOUT: %AddAssignWith.impl_witness_table = impl_witness_table (%Core.import_ref.098), @Int.as.AddAssignWith.impl [concrete] // CHECK:STDOUT: %Core.Op.1b1: @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.type.1 (%Int.as.AddAssignWith.impl.Op.type.a58fbe.2) = import_ref Core//prelude/types/int, Op, loaded [symbolic = @Int.as.AddAssignWith.impl.%Int.as.AddAssignWith.impl.Op.1 (constants.%Int.as.AddAssignWith.impl.Op.45b360.2)] // CHECK:STDOUT: %Core.import_ref.47b: Core.IntLiteral = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.AnyInt.impl.%N (constants.%N.fe9)] -// CHECK:STDOUT: %Core.import_ref.a64: @Int.as.AnyInt.impl.%Int.as.AnyInt.impl.AsInt.type (%Int.as.AnyInt.impl.AsInt.type.324) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.AnyInt.impl.%Int.as.AnyInt.impl.AsInt (constants.%Int.as.AnyInt.impl.AsInt.ec6)] -// CHECK:STDOUT: %AnyInt.impl_witness_table = impl_witness_table (%Core.import_ref.47b, %Core.import_ref.a64), @Int.as.AnyInt.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.fd3: @Int.as.AnyInt.impl.%Int.as.AnyInt.impl.AsInt.type (%Int.as.AnyInt.impl.AsInt.type.80b) = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, loaded [symbolic = @Int.as.AnyInt.impl.%Int.as.AnyInt.impl.AsInt (constants.%Int.as.AnyInt.impl.AsInt.23f)] +// CHECK:STDOUT: %AnyInt.impl_witness_table = impl_witness_table (%Core.import_ref.47b, %Core.import_ref.fd3), @Int.as.AnyInt.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TestIterate(%R.loc30_17.2: %Iterate_where.type.8bc) { +// CHECK:STDOUT: generic fn @TestIterate(%R.loc30_17.2: %Iterate_where.type.ec1) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc30_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.c86)] -// CHECK:STDOUT: %Iterate.facet.loc34_19.5: %Iterate.type = facet_value %R.as_type.loc30_62.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc34_19.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.d2b)] -// CHECK:STDOUT: %.loc34_19.19: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc34_19.5 [symbolic = %.loc34_19.19 (constants.%.3e2)] -// CHECK:STDOUT: %impl.elem2.loc34_19.2: @TestIterate.%.loc34_19.19 (%.3e2) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc34_19.2 (constants.%impl.elem2.f53)] -// CHECK:STDOUT: %specific_impl_fn.loc34_19.4: = specific_impl_function %impl.elem2.loc34_19.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc34_19.5) [symbolic = %specific_impl_fn.loc34_19.4 (constants.%specific_impl_fn.87a)] +// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc30_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.18b)] +// CHECK:STDOUT: %Iterate.facet.loc34_19.5: %Iterate.type = facet_value %R.as_type.loc30_62.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc34_19.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.8fb)] +// CHECK:STDOUT: %.loc34_19.19: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc34_19.5 [symbolic = %.loc34_19.19 (constants.%.985)] +// CHECK:STDOUT: %impl.elem2.loc34_19.2: @TestIterate.%.loc34_19.19 (%.985) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc34_19.2 (constants.%impl.elem2.8ec)] +// CHECK:STDOUT: %specific_impl_fn.loc34_19.4: = specific_impl_function %impl.elem2.loc34_19.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc34_19.5) [symbolic = %specific_impl_fn.loc34_19.4 (constants.%specific_impl_fn.9ca)] // CHECK:STDOUT: -// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.3b4)] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc34_19.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.28b)] -// CHECK:STDOUT: %.loc34_19.20: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc34_19.5 [symbolic = %.loc34_19.20 (constants.%.a8b)] -// CHECK:STDOUT: %impl.elem3.loc34_19.2: @TestIterate.%.loc34_19.20 (%.a8b) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc34_19.2 (constants.%impl.elem3.9c3)] -// CHECK:STDOUT: %specific_impl_fn.loc34_19.5: = specific_impl_function %impl.elem3.loc34_19.2, @Iterate.WithSelf.Next(%Iterate.facet.loc34_19.5) [symbolic = %specific_impl_fn.loc34_19.5 (constants.%specific_impl_fn.ab2)] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.515)] -// CHECK:STDOUT: %.loc34_19.21: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc34_19.21 (constants.%.94f)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.5d5)] -// CHECK:STDOUT: %impl.elem0.loc34_19.2: @TestIterate.%.loc34_19.21 (%.94f) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_19.2 (constants.%impl.elem0.e52)] -// CHECK:STDOUT: %specific_impl_fn.loc34_19.6: = specific_impl_function %impl.elem0.loc34_19.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc34_19.6 (constants.%specific_impl_fn.12e)] +// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.2ef)] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc34_19.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.830)] +// CHECK:STDOUT: %.loc34_19.20: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc34_19.5 [symbolic = %.loc34_19.20 (constants.%.f86)] +// CHECK:STDOUT: %impl.elem3.loc34_19.2: @TestIterate.%.loc34_19.20 (%.f86) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc34_19.2 (constants.%impl.elem3.5f7)] +// CHECK:STDOUT: %specific_impl_fn.loc34_19.5: = specific_impl_function %impl.elem3.loc34_19.2, @Iterate.WithSelf.Next(%Iterate.facet.loc34_19.5) [symbolic = %specific_impl_fn.loc34_19.5 (constants.%specific_impl_fn.9a8)] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.71c)] +// CHECK:STDOUT: %.loc34_19.21: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc34_19.21 (constants.%.fa0)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.d26)] +// CHECK:STDOUT: %impl.elem0.loc34_19.2: @TestIterate.%.loc34_19.21 (%.fa0) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_19.2 (constants.%impl.elem0.544)] +// CHECK:STDOUT: %specific_impl_fn.loc34_19.6: = specific_impl_function %impl.elem0.loc34_19.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc34_19.6 (constants.%specific_impl_fn.fa9)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc30_62.1 (%R.as_type.67d)) { +// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc30_62.1 (%R.as_type.a02)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %i.patt: %pattern_type.6b6 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } -// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc30_62.1 (%R.as_type.67d) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc34_19.1: @TestIterate.%.loc34_19.19 (%.3e2) = impl_witness_access constants.%Iterate.lookup_impl_witness.c86, element2 [symbolic = %impl.elem2.loc34_19.2 (constants.%impl.elem2.f53)] +// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc30_62.1 (%R.as_type.a02) = name_ref r, %r +// CHECK:STDOUT: %impl.elem2.loc34_19.1: @TestIterate.%.loc34_19.19 (%.985) = impl_witness_access constants.%Iterate.lookup_impl_witness.18b, element2 [symbolic = %impl.elem2.loc34_19.2 (constants.%impl.elem2.8ec)] // CHECK:STDOUT: %bound_method.loc34_19.1: = bound_method %r.ref, %impl.elem2.loc34_19.1 -// CHECK:STDOUT: %Iterate.facet.loc34_19.1: %Iterate.type = facet_value constants.%R.as_type.67d, (constants.%Iterate.lookup_impl_witness.c86) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %.loc34_19.1: %Iterate.type = converted constants.%R.as_type.67d, %Iterate.facet.loc34_19.1 [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %Iterate.facet.loc34_19.2: %Iterate.type = facet_value constants.%R.as_type.67d, (constants.%Iterate.lookup_impl_witness.c86) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %.loc34_19.2: %Iterate.type = converted constants.%R.as_type.67d, %Iterate.facet.loc34_19.2 [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %specific_impl_fn.loc34_19.1: = specific_impl_function %impl.elem2.loc34_19.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.bbb) [symbolic = %specific_impl_fn.loc34_19.4 (constants.%specific_impl_fn.87a)] +// CHECK:STDOUT: %Iterate.facet.loc34_19.1: %Iterate.type = facet_value constants.%R.as_type.a02, (constants.%Iterate.lookup_impl_witness.18b) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %.loc34_19.1: %Iterate.type = converted constants.%R.as_type.a02, %Iterate.facet.loc34_19.1 [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %Iterate.facet.loc34_19.2: %Iterate.type = facet_value constants.%R.as_type.a02, (constants.%Iterate.lookup_impl_witness.18b) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %.loc34_19.2: %Iterate.type = converted constants.%R.as_type.a02, %Iterate.facet.loc34_19.2 [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %specific_impl_fn.loc34_19.1: = specific_impl_function %impl.elem2.loc34_19.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.353) [symbolic = %specific_impl_fn.loc34_19.4 (constants.%specific_impl_fn.9ca)] // CHECK:STDOUT: %bound_method.loc34_19.2: = bound_method %r.ref, %specific_impl_fn.loc34_19.1 -// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.ca2) = var_storage invalid -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.ca2) to %var = call %bound_method.loc34_19.2(%r.ref) +// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.c8a) = var_storage invalid +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.c8a) to %var = call %bound_method.loc34_19.2(%r.ref) // CHECK:STDOUT: assign %var, %Iterate.WithSelf.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr: @TestIterate.%ptr (%ptr.3b4) = addr_of %var -// CHECK:STDOUT: %impl.elem3.loc34_19.1: @TestIterate.%.loc34_19.20 (%.a8b) = impl_witness_access constants.%Iterate.lookup_impl_witness.c86, element3 [symbolic = %impl.elem3.loc34_19.2 (constants.%impl.elem3.9c3)] +// CHECK:STDOUT: %addr: @TestIterate.%ptr (%ptr.2ef) = addr_of %var +// CHECK:STDOUT: %impl.elem3.loc34_19.1: @TestIterate.%.loc34_19.20 (%.f86) = impl_witness_access constants.%Iterate.lookup_impl_witness.18b, element3 [symbolic = %impl.elem3.loc34_19.2 (constants.%impl.elem3.5f7)] // CHECK:STDOUT: %bound_method.loc34_19.3: = bound_method %r.ref, %impl.elem3.loc34_19.1 -// CHECK:STDOUT: %Iterate.facet.loc34_19.3: %Iterate.type = facet_value constants.%R.as_type.67d, (constants.%Iterate.lookup_impl_witness.c86) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %.loc34_19.3: %Iterate.type = converted constants.%R.as_type.67d, %Iterate.facet.loc34_19.3 [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %Iterate.facet.loc34_19.4: %Iterate.type = facet_value constants.%R.as_type.67d, (constants.%Iterate.lookup_impl_witness.c86) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %.loc34_19.4: %Iterate.type = converted constants.%R.as_type.67d, %Iterate.facet.loc34_19.4 [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.bbb)] -// CHECK:STDOUT: %.loc34_19.5: %Destroy.type = converted constants.%as_type.ca2, constants.%impl.elem1.d31 [symbolic = %impl.elem1 (constants.%impl.elem1.d31)] -// CHECK:STDOUT: %.loc34_19.6: %Destroy.type = converted constants.%as_type.ca2, constants.%impl.elem1.d31 [symbolic = %impl.elem1 (constants.%impl.elem1.d31)] -// CHECK:STDOUT: %specific_impl_fn.loc34_19.2: = specific_impl_function %impl.elem3.loc34_19.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.bbb) [symbolic = %specific_impl_fn.loc34_19.5 (constants.%specific_impl_fn.ab2)] +// CHECK:STDOUT: %Iterate.facet.loc34_19.3: %Iterate.type = facet_value constants.%R.as_type.a02, (constants.%Iterate.lookup_impl_witness.18b) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %.loc34_19.3: %Iterate.type = converted constants.%R.as_type.a02, %Iterate.facet.loc34_19.3 [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %Iterate.facet.loc34_19.4: %Iterate.type = facet_value constants.%R.as_type.a02, (constants.%Iterate.lookup_impl_witness.18b) [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %.loc34_19.4: %Iterate.type = converted constants.%R.as_type.a02, %Iterate.facet.loc34_19.4 [symbolic = %Iterate.facet.loc34_19.5 (constants.%Iterate.facet.353)] +// CHECK:STDOUT: %.loc34_19.5: %Destroy.type = converted constants.%as_type.c8a, constants.%impl.elem1.295 [symbolic = %impl.elem1 (constants.%impl.elem1.295)] +// CHECK:STDOUT: %.loc34_19.6: %Destroy.type = converted constants.%as_type.c8a, constants.%impl.elem1.295 [symbolic = %impl.elem1 (constants.%impl.elem1.295)] +// CHECK:STDOUT: %specific_impl_fn.loc34_19.2: = specific_impl_function %impl.elem3.loc34_19.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.353) [symbolic = %specific_impl_fn.loc34_19.5 (constants.%specific_impl_fn.9a8)] // CHECK:STDOUT: %bound_method.loc34_19.4: = bound_method %r.ref, %specific_impl_fn.loc34_19.2 -// CHECK:STDOUT: %.loc34_19.7: ref %Optional.e28 = temporary_storage -// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.e28 to %.loc34_19.7 = call %bound_method.loc34_19.4(%r.ref, %addr) -// CHECK:STDOUT: %.loc34_19.8: ref %Optional.e28 = temporary %.loc34_19.7, %Iterate.WithSelf.Next.call -// CHECK:STDOUT: %.loc34_19.9: %Optional.HasValue.type.c6d = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.HasValue.89b] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.c6d = name_ref HasValue, %.loc34_19.9 [concrete = constants.%Optional.HasValue.89b] +// CHECK:STDOUT: %.loc34_19.7: ref %Optional.a23 = temporary_storage +// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.a23 to %.loc34_19.7 = call %bound_method.loc34_19.4(%r.ref, %addr) +// CHECK:STDOUT: %.loc34_19.8: ref %Optional.a23 = temporary %.loc34_19.7, %Iterate.WithSelf.Next.call +// CHECK:STDOUT: %.loc34_19.9: %Optional.HasValue.type.560 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.HasValue.bef] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.560 = name_ref HasValue, %.loc34_19.9 [concrete = constants.%Optional.HasValue.bef] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc34_19.8, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc34_19.5: = bound_method %.loc34_19.8, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc34_19.10: %Optional.e28 = acquire_value %.loc34_19.8 +// CHECK:STDOUT: %.loc34_19.10: %Optional.a23 = acquire_value %.loc34_19.8 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc34_19.5(%.loc34_19.10) // CHECK:STDOUT: %.loc34_19.11: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc34_19.12: bool = converted %Optional.HasValue.call, %.loc34_19.11 // CHECK:STDOUT: if %.loc34_19.12 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc34_19.13: %Optional.Get.type.7e6 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.Get.722] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.7e6 = name_ref Get, %.loc34_19.13 [concrete = constants.%Optional.Get.722] +// CHECK:STDOUT: %.loc34_19.13: %Optional.Get.type.11a = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.Get.0ee] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.11a = name_ref Get, %.loc34_19.13 [concrete = constants.%Optional.Get.0ee] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc34_19.8, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc34_19.6: = bound_method %.loc34_19.8, %Optional.Get.specific_fn -// CHECK:STDOUT: %.loc34_19.14: %Optional.e28 = acquire_value %.loc34_19.8 +// CHECK:STDOUT: %.loc34_19.14: %Optional.a23 = acquire_value %.loc34_19.8 // CHECK:STDOUT: %Optional.Get.call: init %i32 = call %bound_method.loc34_19.6(%.loc34_19.14) // CHECK:STDOUT: %.loc34_19.15: %i32 = value_of_initializer %Optional.Get.call // CHECK:STDOUT: %.loc34_19.16: %i32 = converted %Optional.Get.call, %.loc34_19.15 @@ -1062,14 +1062,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i: %i32 = wrapper_binding i, %.loc34_19.16 // CHECK:STDOUT: %sum.ref: ref %i32 = name_ref sum, %sum // CHECK:STDOUT: %i.ref: %i32 = name_ref i, %i -// CHECK:STDOUT: %impl.elem0.loc35: %.b28 = impl_witness_access constants.%AddAssignWith.impl_witness.22e, element0 [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.2] +// CHECK:STDOUT: %impl.elem0.loc35: %.98a = impl_witness_access constants.%AddAssignWith.impl_witness.ccf, element0 [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.2] // CHECK:STDOUT: %bound_method.loc35_9.1: = bound_method %sum.ref, %impl.elem0.loc35 -// CHECK:STDOUT: %specific_fn.loc35: = specific_function %impl.elem0.loc35, @Int.as.AddAssignWith.impl.Op.1(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b14d9d.1] +// CHECK:STDOUT: %specific_fn.loc35: = specific_function %impl.elem0.loc35, @Int.as.AddAssignWith.impl.Op.1(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.80c75c.1] // CHECK:STDOUT: %bound_method.loc35_9.2: = bound_method %sum.ref, %specific_fn.loc35 -// CHECK:STDOUT: %.loc35: %Int.as.AddAssignWith.impl.Op.type.73460a.1 = specific_constant imports.%Core.Op.1b1, @Int.as.AddAssignWith.impl(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.1] -// CHECK:STDOUT: %Op.ref: %Int.as.AddAssignWith.impl.Op.type.73460a.1 = name_ref Op, %.loc35 [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.1] +// CHECK:STDOUT: %.loc35: %Int.as.AddAssignWith.impl.Op.type.a94901.1 = specific_constant imports.%Core.Op.1b1, @Int.as.AddAssignWith.impl(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.1] +// CHECK:STDOUT: %Op.ref: %Int.as.AddAssignWith.impl.Op.type.a94901.1 = name_ref Op, %.loc35 [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.1] // CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.bound: = bound_method %sum.ref, %Op.ref -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn: = specific_function %Op.ref, @Int.as.AddAssignWith.impl.Op.2(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b14d9d.2] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn: = specific_function %Op.ref, @Int.as.AddAssignWith.impl.Op.2(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.80c75c.2] // CHECK:STDOUT: %bound_method.loc35_9.3: = bound_method %sum.ref, %Int.as.AddAssignWith.impl.Op.specific_fn // CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.call: init %empty_tuple.type = call %bound_method.loc35_9.3(%sum.ref, %i.ref) // CHECK:STDOUT: br !for.next @@ -1077,11 +1077,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !for.done: // CHECK:STDOUT: %Destroy.Op.bound.loc34: = bound_method %.loc34_19.8, constants.%Destroy.Op.1a2547.9 // CHECK:STDOUT: %Destroy.Op.call.loc34: init %empty_tuple.type = call %Destroy.Op.bound.loc34(%.loc34_19.8) -// CHECK:STDOUT: %impl.elem0.loc34_19.1: @TestIterate.%.loc34_19.21 (%.94f) = impl_witness_access constants.%Destroy.lookup_impl_witness.5d5, element0 [symbolic = %impl.elem0.loc34_19.2 (constants.%impl.elem0.e52)] +// CHECK:STDOUT: %impl.elem0.loc34_19.1: @TestIterate.%.loc34_19.21 (%.fa0) = impl_witness_access constants.%Destroy.lookup_impl_witness.d26, element0 [symbolic = %impl.elem0.loc34_19.2 (constants.%impl.elem0.544)] // CHECK:STDOUT: %bound_method.loc34_19.7: = bound_method %var, %impl.elem0.loc34_19.1 -// CHECK:STDOUT: %.loc34_19.17: %Destroy.type = converted constants.%as_type.ca2, constants.%impl.elem1.d31 [symbolic = %impl.elem1 (constants.%impl.elem1.d31)] -// CHECK:STDOUT: %.loc34_19.18: %Destroy.type = converted constants.%as_type.ca2, constants.%impl.elem1.d31 [symbolic = %impl.elem1 (constants.%impl.elem1.d31)] -// CHECK:STDOUT: %specific_impl_fn.loc34_19.3: = specific_impl_function %impl.elem0.loc34_19.1, @Destroy.WithSelf.Op(constants.%impl.elem1.d31) [symbolic = %specific_impl_fn.loc34_19.6 (constants.%specific_impl_fn.12e)] +// CHECK:STDOUT: %.loc34_19.17: %Destroy.type = converted constants.%as_type.c8a, constants.%impl.elem1.295 [symbolic = %impl.elem1 (constants.%impl.elem1.295)] +// CHECK:STDOUT: %.loc34_19.18: %Destroy.type = converted constants.%as_type.c8a, constants.%impl.elem1.295 [symbolic = %impl.elem1 (constants.%impl.elem1.295)] +// CHECK:STDOUT: %specific_impl_fn.loc34_19.3: = specific_impl_function %impl.elem0.loc34_19.1, @Destroy.WithSelf.Op(constants.%impl.elem1.295) [symbolic = %specific_impl_fn.loc34_19.6 (constants.%specific_impl_fn.fa9)] // CHECK:STDOUT: %bound_method.loc34_19.8: = bound_method %var, %specific_impl_fn.loc34_19.3 // CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc34_19.8(%var) // CHECK:STDOUT: @@ -1120,7 +1120,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc34_19.6(%self.param: ref %Optional.e28) { +// CHECK:STDOUT: fn @Destroy.Op.loc34_19.6(%self.param: ref %Optional.a23) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -1134,13 +1134,13 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.patt.loc49: %pattern_type.6b6 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %m.ref: ref %MutableRange = name_ref m, %m -// CHECK:STDOUT: %impl.elem2.loc49: %.d6a = impl_witness_access constants.%Iterate.impl_witness.cea, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.8d2] +// CHECK:STDOUT: %impl.elem2.loc49: %.55e = impl_witness_access constants.%Iterate.impl_witness.b92, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.d98] // CHECK:STDOUT: %bound_method.loc49_19.1: = bound_method %m.ref, %impl.elem2.loc49 // CHECK:STDOUT: %facet_value.loc49_19.1: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.0e0, constants.%custom_witness.ed3, constants.%custom_witness.955, constants.%custom_witness.1f5, constants.%custom_witness.ef8, constants.%custom_witness.981, constants.%custom_witness.444) [concrete = constants.%facet_value.cd6] // CHECK:STDOUT: %.loc49_19.1: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc49_19.1 [concrete = constants.%facet_value.cd6] // CHECK:STDOUT: %facet_value.loc49_19.2: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.0e0, constants.%custom_witness.ed3, constants.%custom_witness.955, constants.%custom_witness.1f5, constants.%custom_witness.ef8, constants.%custom_witness.981, constants.%custom_witness.444) [concrete = constants.%facet_value.cd6] // CHECK:STDOUT: %.loc49_19.2: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc49_19.2 [concrete = constants.%facet_value.cd6] -// CHECK:STDOUT: %specific_fn.loc49_19.1: = specific_function %impl.elem2.loc49, @R.as_type.as.Iterate.impl.NewCursor(constants.%facet_value.cd6) [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.bf1] +// CHECK:STDOUT: %specific_fn.loc49_19.1: = specific_function %impl.elem2.loc49, @R.as_type.as.Iterate.impl.NewCursor(constants.%facet_value.cd6) [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.bad] // CHECK:STDOUT: %bound_method.loc49_19.2: = bound_method %m.ref, %specific_fn.loc49_19.1 // CHECK:STDOUT: %var.loc49: ref %tuple.type.508 = var_storage invalid // CHECK:STDOUT: %.loc49_18.1: %MutableRange = acquire_value %m.ref @@ -1150,36 +1150,36 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !for.next.loc49: // CHECK:STDOUT: %addr.loc49: %ptr.45c = addr_of %var.loc49 -// CHECK:STDOUT: %impl.elem3.loc49: %.d23 = impl_witness_access constants.%Iterate.impl_witness.cea, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.34d] +// CHECK:STDOUT: %impl.elem3.loc49: %.d4b = impl_witness_access constants.%Iterate.impl_witness.b92, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.d29] // CHECK:STDOUT: %bound_method.loc49_19.3: = bound_method %m.ref, %impl.elem3.loc49 // CHECK:STDOUT: %facet_value.loc49_19.3: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.0e0, constants.%custom_witness.ed3, constants.%custom_witness.955, constants.%custom_witness.1f5, constants.%custom_witness.ef8, constants.%custom_witness.981, constants.%custom_witness.444) [concrete = constants.%facet_value.cd6] // CHECK:STDOUT: %.loc49_19.3: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc49_19.3 [concrete = constants.%facet_value.cd6] // CHECK:STDOUT: %facet_value.loc49_19.4: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.0e0, constants.%custom_witness.ed3, constants.%custom_witness.955, constants.%custom_witness.1f5, constants.%custom_witness.ef8, constants.%custom_witness.981, constants.%custom_witness.444) [concrete = constants.%facet_value.cd6] // CHECK:STDOUT: %.loc49_19.4: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc49_19.4 [concrete = constants.%facet_value.cd6] -// CHECK:STDOUT: %specific_fn.loc49_19.2: = specific_function %impl.elem3.loc49, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.cd6) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn.dd5] +// CHECK:STDOUT: %specific_fn.loc49_19.2: = specific_function %impl.elem3.loc49, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.cd6) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn.4ca] // CHECK:STDOUT: %bound_method.loc49_19.4: = bound_method %m.ref, %specific_fn.loc49_19.2 -// CHECK:STDOUT: %.loc49_19.5: ref %Optional.e28 = temporary_storage +// CHECK:STDOUT: %.loc49_19.5: ref %Optional.a23 = temporary_storage // CHECK:STDOUT: %.loc49_18.2: %MutableRange = acquire_value %m.ref -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call.loc49: init %Optional.e28 to %.loc49_19.5 = call %bound_method.loc49_19.4(%.loc49_18.2, %addr.loc49) -// CHECK:STDOUT: %.loc49_19.6: ref %Optional.e28 = temporary %.loc49_19.5, %R.as_type.as.Iterate.impl.Next.call.loc49 -// CHECK:STDOUT: %.loc49_19.7: %Optional.HasValue.type.c6d = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.HasValue.89b] -// CHECK:STDOUT: %HasValue.ref.loc49: %Optional.HasValue.type.c6d = name_ref HasValue, %.loc49_19.7 [concrete = constants.%Optional.HasValue.89b] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call.loc49: init %Optional.a23 to %.loc49_19.5 = call %bound_method.loc49_19.4(%.loc49_18.2, %addr.loc49) +// CHECK:STDOUT: %.loc49_19.6: ref %Optional.a23 = temporary %.loc49_19.5, %R.as_type.as.Iterate.impl.Next.call.loc49 +// CHECK:STDOUT: %.loc49_19.7: %Optional.HasValue.type.560 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.HasValue.bef] +// CHECK:STDOUT: %HasValue.ref.loc49: %Optional.HasValue.type.560 = name_ref HasValue, %.loc49_19.7 [concrete = constants.%Optional.HasValue.bef] // CHECK:STDOUT: %Optional.HasValue.bound.loc49: = bound_method %.loc49_19.6, %HasValue.ref.loc49 -// CHECK:STDOUT: %Optional.HasValue.specific_fn.loc49: = specific_function %HasValue.ref.loc49, @Optional.HasValue(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn.loc49: = specific_function %HasValue.ref.loc49, @Optional.HasValue(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc49_19.5: = bound_method %.loc49_19.6, %Optional.HasValue.specific_fn.loc49 -// CHECK:STDOUT: %.loc49_19.8: %Optional.e28 = acquire_value %.loc49_19.6 +// CHECK:STDOUT: %.loc49_19.8: %Optional.a23 = acquire_value %.loc49_19.6 // CHECK:STDOUT: %Optional.HasValue.call.loc49: init bool = call %bound_method.loc49_19.5(%.loc49_19.8) // CHECK:STDOUT: %.loc49_19.9: bool = value_of_initializer %Optional.HasValue.call.loc49 // CHECK:STDOUT: %.loc49_19.10: bool = converted %Optional.HasValue.call.loc49, %.loc49_19.9 // CHECK:STDOUT: if %.loc49_19.10 br !for.body.loc49 else br !for.done.loc49 // CHECK:STDOUT: // CHECK:STDOUT: !for.body.loc49: -// CHECK:STDOUT: %.loc49_19.11: %Optional.Get.type.7e6 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.Get.722] -// CHECK:STDOUT: %Get.ref.loc49: %Optional.Get.type.7e6 = name_ref Get, %.loc49_19.11 [concrete = constants.%Optional.Get.722] +// CHECK:STDOUT: %.loc49_19.11: %Optional.Get.type.11a = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.Get.0ee] +// CHECK:STDOUT: %Get.ref.loc49: %Optional.Get.type.11a = name_ref Get, %.loc49_19.11 [concrete = constants.%Optional.Get.0ee] // CHECK:STDOUT: %Optional.Get.bound.loc49: = bound_method %.loc49_19.6, %Get.ref.loc49 -// CHECK:STDOUT: %Optional.Get.specific_fn.loc49: = specific_function %Get.ref.loc49, @Optional.Get(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn.loc49: = specific_function %Get.ref.loc49, @Optional.Get(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc49_19.6: = bound_method %.loc49_19.6, %Optional.Get.specific_fn.loc49 -// CHECK:STDOUT: %.loc49_19.12: %Optional.e28 = acquire_value %.loc49_19.6 +// CHECK:STDOUT: %.loc49_19.12: %Optional.a23 = acquire_value %.loc49_19.6 // CHECK:STDOUT: %Optional.Get.call.loc49: init %i32 = call %bound_method.loc49_19.6(%.loc49_19.12) // CHECK:STDOUT: %.loc49_19.13: %i32 = value_of_initializer %Optional.Get.call.loc49 // CHECK:STDOUT: %.loc49_19.14: %i32 = converted %Optional.Get.call.loc49, %.loc49_19.13 @@ -1187,14 +1187,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.loc49: %i32 = wrapper_binding i, %.loc49_19.14 // CHECK:STDOUT: %sum.ref.loc50: ref %i32 = name_ref sum, %sum // CHECK:STDOUT: %i.ref.loc50: %i32 = name_ref i, %i.loc49 -// CHECK:STDOUT: %impl.elem0.loc50: %.b28 = impl_witness_access constants.%AddAssignWith.impl_witness.22e, element0 [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.2] +// CHECK:STDOUT: %impl.elem0.loc50: %.98a = impl_witness_access constants.%AddAssignWith.impl_witness.ccf, element0 [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.2] // CHECK:STDOUT: %bound_method.loc50_9.1: = bound_method %sum.ref.loc50, %impl.elem0.loc50 -// CHECK:STDOUT: %specific_fn.loc50: = specific_function %impl.elem0.loc50, @Int.as.AddAssignWith.impl.Op.1(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b14d9d.1] +// CHECK:STDOUT: %specific_fn.loc50: = specific_function %impl.elem0.loc50, @Int.as.AddAssignWith.impl.Op.1(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.80c75c.1] // CHECK:STDOUT: %bound_method.loc50_9.2: = bound_method %sum.ref.loc50, %specific_fn.loc50 -// CHECK:STDOUT: %.loc50: %Int.as.AddAssignWith.impl.Op.type.73460a.1 = specific_constant imports.%Core.Op.1b1, @Int.as.AddAssignWith.impl(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.1] -// CHECK:STDOUT: %Op.ref.loc50: %Int.as.AddAssignWith.impl.Op.type.73460a.1 = name_ref Op, %.loc50 [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.1] +// CHECK:STDOUT: %.loc50: %Int.as.AddAssignWith.impl.Op.type.a94901.1 = specific_constant imports.%Core.Op.1b1, @Int.as.AddAssignWith.impl(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.1] +// CHECK:STDOUT: %Op.ref.loc50: %Int.as.AddAssignWith.impl.Op.type.a94901.1 = name_ref Op, %.loc50 [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.1] // CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.bound.loc50: = bound_method %sum.ref.loc50, %Op.ref.loc50 -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.loc50: = specific_function %Op.ref.loc50, @Int.as.AddAssignWith.impl.Op.2(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b14d9d.2] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.loc50: = specific_function %Op.ref.loc50, @Int.as.AddAssignWith.impl.Op.2(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.80c75c.2] // CHECK:STDOUT: %bound_method.loc50_9.3: = bound_method %sum.ref.loc50, %Int.as.AddAssignWith.impl.Op.specific_fn.loc50 // CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.call.loc50: init %empty_tuple.type = call %bound_method.loc50_9.3(%sum.ref.loc50, %i.ref.loc50) // CHECK:STDOUT: br !for.next.loc49 @@ -1204,13 +1204,13 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.patt.loc55: %pattern_type.6b6 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %c.ref: %ConstRange = name_ref c, %c -// CHECK:STDOUT: %impl.elem2.loc55: %.744 = impl_witness_access constants.%Iterate.impl_witness.12a, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.2f6] +// CHECK:STDOUT: %impl.elem2.loc55: %.e89c = impl_witness_access constants.%Iterate.impl_witness.a61, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.0b2] // CHECK:STDOUT: %bound_method.loc55_19.1: = bound_method %c.ref, %impl.elem2.loc55 // CHECK:STDOUT: %facet_value.loc55_19.1: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.0e0, constants.%custom_witness.23e, constants.%custom_witness.6e8, constants.%custom_witness.150, constants.%custom_witness.adb, constants.%custom_witness.941, constants.%custom_witness.746) [concrete = constants.%facet_value.e88] // CHECK:STDOUT: %.loc55_19.1: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc55_19.1 [concrete = constants.%facet_value.e88] // CHECK:STDOUT: %facet_value.loc55_19.2: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.0e0, constants.%custom_witness.23e, constants.%custom_witness.6e8, constants.%custom_witness.150, constants.%custom_witness.adb, constants.%custom_witness.941, constants.%custom_witness.746) [concrete = constants.%facet_value.e88] // CHECK:STDOUT: %.loc55_19.2: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc55_19.2 [concrete = constants.%facet_value.e88] -// CHECK:STDOUT: %specific_fn.loc55_19.1: = specific_function %impl.elem2.loc55, @R.as_type.as.Iterate.impl.NewCursor(constants.%facet_value.e88) [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.a05] +// CHECK:STDOUT: %specific_fn.loc55_19.1: = specific_function %impl.elem2.loc55, @R.as_type.as.Iterate.impl.NewCursor(constants.%facet_value.e88) [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.e65] // CHECK:STDOUT: %bound_method.loc55_19.2: = bound_method %c.ref, %specific_fn.loc55_19.1 // CHECK:STDOUT: %var.loc55: ref %tuple.type.69f = var_storage invalid // CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.call.loc55: init %tuple.type.69f to %var.loc55 = call %bound_method.loc55_19.2(%c.ref) @@ -1219,35 +1219,35 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !for.next.loc55: // CHECK:STDOUT: %addr.loc55: %ptr.c5c = addr_of %var.loc55 -// CHECK:STDOUT: %impl.elem3.loc55: %.03b = impl_witness_access constants.%Iterate.impl_witness.12a, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.393] +// CHECK:STDOUT: %impl.elem3.loc55: %.f6d = impl_witness_access constants.%Iterate.impl_witness.a61, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.bec] // CHECK:STDOUT: %bound_method.loc55_19.3: = bound_method %c.ref, %impl.elem3.loc55 // CHECK:STDOUT: %facet_value.loc55_19.3: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.0e0, constants.%custom_witness.23e, constants.%custom_witness.6e8, constants.%custom_witness.150, constants.%custom_witness.adb, constants.%custom_witness.941, constants.%custom_witness.746) [concrete = constants.%facet_value.e88] // CHECK:STDOUT: %.loc55_19.3: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc55_19.3 [concrete = constants.%facet_value.e88] // CHECK:STDOUT: %facet_value.loc55_19.4: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.0e0, constants.%custom_witness.23e, constants.%custom_witness.6e8, constants.%custom_witness.150, constants.%custom_witness.adb, constants.%custom_witness.941, constants.%custom_witness.746) [concrete = constants.%facet_value.e88] // CHECK:STDOUT: %.loc55_19.4: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc55_19.4 [concrete = constants.%facet_value.e88] -// CHECK:STDOUT: %specific_fn.loc55_19.2: = specific_function %impl.elem3.loc55, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.e88) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn.4cc] +// CHECK:STDOUT: %specific_fn.loc55_19.2: = specific_function %impl.elem3.loc55, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.e88) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn.bf1] // CHECK:STDOUT: %bound_method.loc55_19.4: = bound_method %c.ref, %specific_fn.loc55_19.2 -// CHECK:STDOUT: %.loc55_19.5: ref %Optional.e28 = temporary_storage -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call.loc55: init %Optional.e28 to %.loc55_19.5 = call %bound_method.loc55_19.4(%c.ref, %addr.loc55) -// CHECK:STDOUT: %.loc55_19.6: ref %Optional.e28 = temporary %.loc55_19.5, %R.as_type.as.Iterate.impl.Next.call.loc55 -// CHECK:STDOUT: %.loc55_19.7: %Optional.HasValue.type.c6d = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.HasValue.89b] -// CHECK:STDOUT: %HasValue.ref.loc55: %Optional.HasValue.type.c6d = name_ref HasValue, %.loc55_19.7 [concrete = constants.%Optional.HasValue.89b] +// CHECK:STDOUT: %.loc55_19.5: ref %Optional.a23 = temporary_storage +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call.loc55: init %Optional.a23 to %.loc55_19.5 = call %bound_method.loc55_19.4(%c.ref, %addr.loc55) +// CHECK:STDOUT: %.loc55_19.6: ref %Optional.a23 = temporary %.loc55_19.5, %R.as_type.as.Iterate.impl.Next.call.loc55 +// CHECK:STDOUT: %.loc55_19.7: %Optional.HasValue.type.560 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.HasValue.bef] +// CHECK:STDOUT: %HasValue.ref.loc55: %Optional.HasValue.type.560 = name_ref HasValue, %.loc55_19.7 [concrete = constants.%Optional.HasValue.bef] // CHECK:STDOUT: %Optional.HasValue.bound.loc55: = bound_method %.loc55_19.6, %HasValue.ref.loc55 -// CHECK:STDOUT: %Optional.HasValue.specific_fn.loc55: = specific_function %HasValue.ref.loc55, @Optional.HasValue(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn.loc55: = specific_function %HasValue.ref.loc55, @Optional.HasValue(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc55_19.5: = bound_method %.loc55_19.6, %Optional.HasValue.specific_fn.loc55 -// CHECK:STDOUT: %.loc55_19.8: %Optional.e28 = acquire_value %.loc55_19.6 +// CHECK:STDOUT: %.loc55_19.8: %Optional.a23 = acquire_value %.loc55_19.6 // CHECK:STDOUT: %Optional.HasValue.call.loc55: init bool = call %bound_method.loc55_19.5(%.loc55_19.8) // CHECK:STDOUT: %.loc55_19.9: bool = value_of_initializer %Optional.HasValue.call.loc55 // CHECK:STDOUT: %.loc55_19.10: bool = converted %Optional.HasValue.call.loc55, %.loc55_19.9 // CHECK:STDOUT: if %.loc55_19.10 br !for.body.loc55 else br !for.done.loc55 // CHECK:STDOUT: // CHECK:STDOUT: !for.body.loc55: -// CHECK:STDOUT: %.loc55_19.11: %Optional.Get.type.7e6 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.Get.722] -// CHECK:STDOUT: %Get.ref.loc55: %Optional.Get.type.7e6 = name_ref Get, %.loc55_19.11 [concrete = constants.%Optional.Get.722] +// CHECK:STDOUT: %.loc55_19.11: %Optional.Get.type.11a = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.Get.0ee] +// CHECK:STDOUT: %Get.ref.loc55: %Optional.Get.type.11a = name_ref Get, %.loc55_19.11 [concrete = constants.%Optional.Get.0ee] // CHECK:STDOUT: %Optional.Get.bound.loc55: = bound_method %.loc55_19.6, %Get.ref.loc55 -// CHECK:STDOUT: %Optional.Get.specific_fn.loc55: = specific_function %Get.ref.loc55, @Optional.Get(constants.%OptionalStorage.facet.172) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn.loc55: = specific_function %Get.ref.loc55, @Optional.Get(constants.%OptionalStorage.facet.563) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc55_19.6: = bound_method %.loc55_19.6, %Optional.Get.specific_fn.loc55 -// CHECK:STDOUT: %.loc55_19.12: %Optional.e28 = acquire_value %.loc55_19.6 +// CHECK:STDOUT: %.loc55_19.12: %Optional.a23 = acquire_value %.loc55_19.6 // CHECK:STDOUT: %Optional.Get.call.loc55: init %i32 = call %bound_method.loc55_19.6(%.loc55_19.12) // CHECK:STDOUT: %.loc55_19.13: %i32 = value_of_initializer %Optional.Get.call.loc55 // CHECK:STDOUT: %.loc55_19.14: %i32 = converted %Optional.Get.call.loc55, %.loc55_19.13 @@ -1255,14 +1255,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.loc55: %i32 = wrapper_binding i, %.loc55_19.14 // CHECK:STDOUT: %sum.ref.loc56: ref %i32 = name_ref sum, %sum // CHECK:STDOUT: %i.ref.loc56: %i32 = name_ref i, %i.loc55 -// CHECK:STDOUT: %impl.elem0.loc56: %.b28 = impl_witness_access constants.%AddAssignWith.impl_witness.22e, element0 [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.2] +// CHECK:STDOUT: %impl.elem0.loc56: %.98a = impl_witness_access constants.%AddAssignWith.impl_witness.ccf, element0 [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.2] // CHECK:STDOUT: %bound_method.loc56_9.1: = bound_method %sum.ref.loc56, %impl.elem0.loc56 -// CHECK:STDOUT: %specific_fn.loc56: = specific_function %impl.elem0.loc56, @Int.as.AddAssignWith.impl.Op.1(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b14d9d.1] +// CHECK:STDOUT: %specific_fn.loc56: = specific_function %impl.elem0.loc56, @Int.as.AddAssignWith.impl.Op.1(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.80c75c.1] // CHECK:STDOUT: %bound_method.loc56_9.2: = bound_method %sum.ref.loc56, %specific_fn.loc56 -// CHECK:STDOUT: %.loc56: %Int.as.AddAssignWith.impl.Op.type.73460a.1 = specific_constant imports.%Core.Op.1b1, @Int.as.AddAssignWith.impl(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.1] -// CHECK:STDOUT: %Op.ref.loc56: %Int.as.AddAssignWith.impl.Op.type.73460a.1 = name_ref Op, %.loc56 [concrete = constants.%Int.as.AddAssignWith.impl.Op.00e760.1] +// CHECK:STDOUT: %.loc56: %Int.as.AddAssignWith.impl.Op.type.a94901.1 = specific_constant imports.%Core.Op.1b1, @Int.as.AddAssignWith.impl(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.1] +// CHECK:STDOUT: %Op.ref.loc56: %Int.as.AddAssignWith.impl.Op.type.a94901.1 = name_ref Op, %.loc56 [concrete = constants.%Int.as.AddAssignWith.impl.Op.83e130.1] // CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.bound.loc56: = bound_method %sum.ref.loc56, %Op.ref.loc56 -// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.loc56: = specific_function %Op.ref.loc56, @Int.as.AddAssignWith.impl.Op.2(constants.%int_32, constants.%ImplicitAs.facet.eaa) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.b14d9d.2] +// CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.specific_fn.loc56: = specific_function %Op.ref.loc56, @Int.as.AddAssignWith.impl.Op.2(constants.%int_32, constants.%ImplicitAs.facet.640) [concrete = constants.%Int.as.AddAssignWith.impl.Op.specific_fn.80c75c.2] // CHECK:STDOUT: %bound_method.loc56_9.3: = bound_method %sum.ref.loc56, %Int.as.AddAssignWith.impl.Op.specific_fn.loc56 // CHECK:STDOUT: %Int.as.AddAssignWith.impl.Op.call.loc56: init %empty_tuple.type = call %bound_method.loc56_9.3(%sum.ref.loc56, %i.ref.loc56) // CHECK:STDOUT: br !for.next.loc55 @@ -1281,18 +1281,18 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%R.891) { -// CHECK:STDOUT: %R.patt.loc30_17.2 => constants.%R.patt.860 -// CHECK:STDOUT: %R.loc30_17.1 => constants.%R.891 -// CHECK:STDOUT: %R.as_type.loc30_62.1 => constants.%R.as_type.67d -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e21 -// CHECK:STDOUT: %r.param_patt.loc30_60.2 => constants.%r.param_patt.fdd -// CHECK:STDOUT: %r.patt.loc30_60.2 => constants.%r.patt.939 +// CHECK:STDOUT: specific @TestIterate(constants.%R.869) { +// CHECK:STDOUT: %R.patt.loc30_17.2 => constants.%R.patt.bbc +// CHECK:STDOUT: %R.loc30_17.1 => constants.%R.869 +// CHECK:STDOUT: %R.as_type.loc30_62.1 => constants.%R.as_type.a02 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.b2da +// CHECK:STDOUT: %r.param_patt.loc30_60.2 => constants.%r.param_patt.774 +// CHECK:STDOUT: %r.patt.loc30_60.2 => constants.%r.patt.54b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.879) { -// CHECK:STDOUT: %R.patt.loc30_17.2 => constants.%R.patt.860 -// CHECK:STDOUT: %R.loc30_17.1 => constants.%facet_value.879 +// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.8de) { +// CHECK:STDOUT: %R.patt.loc30_17.2 => constants.%R.patt.bbc +// CHECK:STDOUT: %R.loc30_17.1 => constants.%facet_value.8de // CHECK:STDOUT: %R.as_type.loc30_62.1 => constants.%MutableRange // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e635 // CHECK:STDOUT: %r.param_patt.loc30_60.2 => constants.%r.param_patt.c79 @@ -1300,20 +1300,20 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc30 => constants.%complete_type.357 -// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.cea -// CHECK:STDOUT: %Iterate.facet.loc34_19.5 => constants.%Iterate.facet.ffb -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.dcb -// CHECK:STDOUT: %.loc34_19.19 => constants.%.d6a -// CHECK:STDOUT: %impl.elem2.loc34_19.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.8d2 -// CHECK:STDOUT: %specific_impl_fn.loc34_19.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.bf1 +// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.b92 +// CHECK:STDOUT: %Iterate.facet.loc34_19.5 => constants.%Iterate.facet.b2e +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.7db +// CHECK:STDOUT: %.loc34_19.19 => constants.%.55e +// CHECK:STDOUT: %impl.elem2.loc34_19.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.d98 +// CHECK:STDOUT: %specific_impl_fn.loc34_19.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.bad // CHECK:STDOUT: %impl.elem1 => constants.%Destroy.facet.30f // CHECK:STDOUT: %as_type => constants.%tuple.type.508 // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.c28 // CHECK:STDOUT: %ptr => constants.%ptr.45c -// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.30e -// CHECK:STDOUT: %.loc34_19.20 => constants.%.d23 -// CHECK:STDOUT: %impl.elem3.loc34_19.2 => constants.%R.as_type.as.Iterate.impl.Next.34d -// CHECK:STDOUT: %specific_impl_fn.loc34_19.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn.dd5 +// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.c02 +// CHECK:STDOUT: %.loc34_19.20 => constants.%.d4b +// CHECK:STDOUT: %impl.elem3.loc34_19.2 => constants.%R.as_type.as.Iterate.impl.Next.d29 +// CHECK:STDOUT: %specific_impl_fn.loc34_19.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn.4ca // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.c6c // CHECK:STDOUT: %.loc34_19.21 => constants.%.0a4 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%custom_witness.df9cc1.10 @@ -1321,9 +1321,9 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %specific_impl_fn.loc34_19.6 => constants.%Destroy.Op.1a2547.10 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.740) { -// CHECK:STDOUT: %R.patt.loc30_17.2 => constants.%R.patt.860 -// CHECK:STDOUT: %R.loc30_17.1 => constants.%facet_value.740 +// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.227) { +// CHECK:STDOUT: %R.patt.loc30_17.2 => constants.%R.patt.bbc +// CHECK:STDOUT: %R.loc30_17.1 => constants.%facet_value.227 // CHECK:STDOUT: %R.as_type.loc30_62.1 => constants.%ConstRange // CHECK:STDOUT: %pattern_type => constants.%pattern_type.0ba // CHECK:STDOUT: %r.param_patt.loc30_60.2 => constants.%r.param_patt.83e @@ -1331,20 +1331,20 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc30 => constants.%complete_type.357 -// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.12a -// CHECK:STDOUT: %Iterate.facet.loc34_19.5 => constants.%Iterate.facet.5eb -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.ab5 -// CHECK:STDOUT: %.loc34_19.19 => constants.%.744 -// CHECK:STDOUT: %impl.elem2.loc34_19.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.2f6 -// CHECK:STDOUT: %specific_impl_fn.loc34_19.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.a05 +// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.a61 +// CHECK:STDOUT: %Iterate.facet.loc34_19.5 => constants.%Iterate.facet.d83 +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.825 +// CHECK:STDOUT: %.loc34_19.19 => constants.%.e89c +// CHECK:STDOUT: %impl.elem2.loc34_19.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.0b2 +// CHECK:STDOUT: %specific_impl_fn.loc34_19.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.e65 // CHECK:STDOUT: %impl.elem1 => constants.%Destroy.facet.e4c // CHECK:STDOUT: %as_type => constants.%tuple.type.69f // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.8d5 // CHECK:STDOUT: %ptr => constants.%ptr.c5c -// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.e25 -// CHECK:STDOUT: %.loc34_19.20 => constants.%.03b -// CHECK:STDOUT: %impl.elem3.loc34_19.2 => constants.%R.as_type.as.Iterate.impl.Next.393 -// CHECK:STDOUT: %specific_impl_fn.loc34_19.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn.4cc +// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.d4a +// CHECK:STDOUT: %.loc34_19.20 => constants.%.f6d +// CHECK:STDOUT: %impl.elem3.loc34_19.2 => constants.%R.as_type.as.Iterate.impl.Next.bec +// CHECK:STDOUT: %specific_impl_fn.loc34_19.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn.bf1 // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.7ec // CHECK:STDOUT: %.loc34_19.21 => constants.%.0e7 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%custom_witness.df9cc1.11 @@ -1367,17 +1367,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Optional.HasValue.6cd: %Optional.HasValue.type.e9e = struct_value () [symbolic] // CHECK:STDOUT: %T.283: %facet_type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.d50: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.029: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.cb5: %T.as_type.as.OptionalStorage.impl.Get.type.029 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.4bc: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.dc2: %T.as_type.as.OptionalStorage.impl.Has.type.4bc = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.800: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.e83: %T.as_type.as.OptionalStorage.impl.Some.type.800 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.300: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.f54: %T.as_type.as.OptionalStorage.impl.None.type.300 = struct_value () [symbolic] -// CHECK:STDOUT: %.Self.35d: %Iterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.b37: = lookup_impl_witness %.Self.35d, @Iterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.903: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.b37, element0 [symbolic_self] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.671: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.a54: %T.as_type.as.OptionalStorage.impl.Get.type.671 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.d76: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.aa4: %T.as_type.as.OptionalStorage.impl.Has.type.d76 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.973: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.c3a: %T.as_type.as.OptionalStorage.impl.Some.type.973 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.f62: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.faf: %T.as_type.as.OptionalStorage.impl.None.type.f62 = struct_value () [symbolic] // CHECK:STDOUT: %ValueType: type = class_type @ValueType [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -1394,23 +1391,26 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ValueType.Op.4dca31.2: %ValueType.Op.type.83af6e.2 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.d0da43.1: = custom_witness (%ValueType.Op.4dca31.2), @Copy [concrete] // CHECK:STDOUT: %facet_value.bf1: %facet_type = facet_value %ValueType, (%custom_witness.e7a31c.1, %custom_witness.d0da43.1) [concrete] -// CHECK:STDOUT: %Iterate_where.type.dfc: type = facet_type <@Iterate where %impl.elem0.903 = %facet_value.bf1> [concrete] -// CHECK:STDOUT: %pattern_type.161: type = pattern_type %Iterate_where.type.dfc [concrete] -// CHECK:STDOUT: %R.patt.f38: %pattern_type.161 = symbolic_binding_pattern R, 0 [symbolic] -// CHECK:STDOUT: %R.de1: %Iterate_where.type.dfc = symbolic_binding R, 0 [symbolic] -// CHECK:STDOUT: %R.as_type.f62: type = facet_access_type %R.de1 [symbolic] -// CHECK:STDOUT: %pattern_type.669: type = pattern_type %R.as_type.f62 [symbolic] -// CHECK:STDOUT: %r.patt.c0f: %pattern_type.669 = ref_binding_pattern r [symbolic] -// CHECK:STDOUT: %r.param_patt.bb2: %pattern_type.669 = var_param_pattern %r.patt.c0f [symbolic] +// CHECK:STDOUT: %.Self.500: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.1d8: = lookup_impl_witness %.Self.500, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.294: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.1d8, element0 [symbolic_self] +// CHECK:STDOUT: %Iterate_where.type.502: type = facet_type <@Iterate where %impl.elem0.294 = %facet_value.bf1> [concrete] +// CHECK:STDOUT: %pattern_type.4c7: type = pattern_type %Iterate_where.type.502 [concrete] +// CHECK:STDOUT: %R.patt.35d: %pattern_type.4c7 = symbolic_binding_pattern R, 0 [symbolic] +// CHECK:STDOUT: %R.0bd: %Iterate_where.type.502 = symbolic_binding R, 0 [symbolic] +// CHECK:STDOUT: %R.as_type.f55: type = facet_access_type %R.0bd [symbolic] +// CHECK:STDOUT: %pattern_type.d2d: type = pattern_type %R.as_type.f55 [symbolic] +// CHECK:STDOUT: %r.patt.d27: %pattern_type.d2d = ref_binding_pattern r [symbolic] +// CHECK:STDOUT: %r.param_patt.a41: %pattern_type.d2d = var_param_pattern %r.patt.d27 [symbolic] // CHECK:STDOUT: %i.patt: %pattern_type.e9f = value_binding_pattern i [concrete] // CHECK:STDOUT: %CppRangeForIterate.type: type = facet_type <@CppRangeForIterate> [concrete] -// CHECK:STDOUT: %.Self.6bd: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.143: = lookup_impl_witness %.Self.6bd, @CppRangeForIterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.109: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element0 [symbolic_self] -// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.712: = lookup_impl_witness %impl.elem0.109, @CppUnsafeDeref [symbolic_self] -// CHECK:STDOUT: %impl.elem0.56a: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.712, element0 [symbolic_self] -// CHECK:STDOUT: %impl.elem1.222: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element1 [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.109 impls @Destroy and %impl.elem0.109 impls @Copy and %impl.elem0.109 impls @CppUnsafeDeref and %impl.elem0.109 impls @EqWith, @EqWith(%impl.elem1.222) and %impl.elem0.109 impls @Inc and %impl.elem0.56a impls @Destroy and %impl.elem0.56a impls @Copy and %impl.elem1.222 impls @Destroy and %impl.elem1.222 impls @Copy> [concrete] +// CHECK:STDOUT: %.Self.aed: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.f6b: = lookup_impl_witness %.Self.aed, @CppRangeForIterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b73: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element0 [symbolic_self] +// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.595: = lookup_impl_witness %impl.elem0.b73, @CppUnsafeDeref [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a2f: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.595, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.228: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element1 [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.b73 impls @Destroy and %impl.elem0.b73 impls @Copy and %impl.elem0.b73 impls @CppUnsafeDeref and %impl.elem0.b73 impls @EqWith, @EqWith(%impl.elem1.228) and %impl.elem0.b73 impls @Inc and %impl.elem0.a2f impls @Destroy and %impl.elem0.a2f impls @Copy and %impl.elem1.228 impls @Destroy and %impl.elem1.228 impls @Copy> [concrete] // CHECK:STDOUT: %R.39b: %CppRangeForIterate_where.type.1c721f.1 = symbolic_binding R, 0 [symbolic] // CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.7e2712.2: = lookup_impl_witness %R.39b, @CppRangeForIterate [symbolic] // CHECK:STDOUT: %impl.elem1.7a0bff.2: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.7e2712.2, element1 [symbolic] @@ -1423,46 +1423,46 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.lookup_impl_witness.ec3: = lookup_impl_witness %impl.elem0.af7, @Destroy [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.a7a: = lookup_impl_witness %impl.elem0.af7, @Copy [symbolic] // CHECK:STDOUT: %facet_value.194: %facet_type = facet_value %impl.elem0.af7, (%Destroy.lookup_impl_witness.ec3, %Copy.lookup_impl_witness.a7a) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.1f7: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.0d6: %R.as_type.as.Iterate.impl.Next.type.1f7 = struct_value () [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.36f: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.29b: %R.as_type.as.Iterate.impl.NewCursor.type.36f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.acc: = lookup_impl_witness %R.de1, @Iterate [symbolic] -// CHECK:STDOUT: %Iterate.facet.b95: %Iterate.type = facet_value %R.as_type.f62, (%Iterate.lookup_impl_witness.acc) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.d69: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.b95) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.d6f: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.b95) [symbolic] -// CHECK:STDOUT: %.f8a: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.d69, %Iterate.facet.b95 [symbolic] -// CHECK:STDOUT: %impl.elem2.398: %.f8a = impl_witness_access %Iterate.lookup_impl_witness.acc, element2 [symbolic] -// CHECK:STDOUT: %impl.elem1.411: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.acc, element1 [symbolic] -// CHECK:STDOUT: %as_type.bc6: type = facet_access_type %impl.elem1.411 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.544: = specific_impl_function %impl.elem2.398, @Iterate.WithSelf.NewCursor(%Iterate.facet.b95) [symbolic] -// CHECK:STDOUT: %ptr.bdd: type = ptr_type %as_type.bc6 [symbolic] -// CHECK:STDOUT: %.52a: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.d6f, %Iterate.facet.b95 [symbolic] -// CHECK:STDOUT: %impl.elem3.510: %.52a = impl_witness_access %Iterate.lookup_impl_witness.acc, element3 [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.d8f: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c6d: %R.as_type.as.Iterate.impl.Next.type.d8f = struct_value () [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.127: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.627: %R.as_type.as.Iterate.impl.NewCursor.type.127 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.06b: = lookup_impl_witness %R.0bd, @Iterate [symbolic] +// CHECK:STDOUT: %Iterate.facet.dbf: %Iterate.type = facet_value %R.as_type.f55, (%Iterate.lookup_impl_witness.06b) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.1b1: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.dbf) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.705: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.dbf) [symbolic] +// CHECK:STDOUT: %.1c2: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.1b1, %Iterate.facet.dbf [symbolic] +// CHECK:STDOUT: %impl.elem2.49b: %.1c2 = impl_witness_access %Iterate.lookup_impl_witness.06b, element2 [symbolic] +// CHECK:STDOUT: %impl.elem1.3cf: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.06b, element1 [symbolic] +// CHECK:STDOUT: %as_type.dbb: type = facet_access_type %impl.elem1.3cf [symbolic] +// CHECK:STDOUT: %specific_impl_fn.6f3: = specific_impl_function %impl.elem2.49b, @Iterate.WithSelf.NewCursor(%Iterate.facet.dbf) [symbolic] +// CHECK:STDOUT: %ptr.bde: type = ptr_type %as_type.dbb [symbolic] +// CHECK:STDOUT: %.bd3: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.705, %Iterate.facet.dbf [symbolic] +// CHECK:STDOUT: %impl.elem3.d57: %.bd3 = impl_witness_access %Iterate.lookup_impl_witness.06b, element3 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.84c: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%facet_value.bf1) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.af1: = impl_witness imports.%OptionalStorage.impl_witness_table.655, @T.as_type.as.OptionalStorage.impl(%facet_value.bf1) [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.705: %OptionalStorage.type = facet_value %ValueType, (%OptionalStorage.impl_witness.af1) [concrete] -// CHECK:STDOUT: %Optional.95f: type = class_type @Optional, @Optional(%OptionalStorage.facet.705) [concrete] -// CHECK:STDOUT: %specific_impl_fn.a00: = specific_impl_function %impl.elem3.510, @Iterate.WithSelf.Next(%Iterate.facet.b95) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.006: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.705) [concrete] -// CHECK:STDOUT: %Optional.HasValue.988: %Optional.HasValue.type.006 = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Get.type.30f: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.705) [concrete] -// CHECK:STDOUT: %Optional.Get.59c: %Optional.Get.type.30f = struct_value () [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.634: = impl_witness imports.%OptionalStorage.impl_witness_table.199, @T.as_type.as.OptionalStorage.impl(%facet_value.bf1) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.ada: %OptionalStorage.type = facet_value %ValueType, (%OptionalStorage.impl_witness.634) [concrete] +// CHECK:STDOUT: %Optional.f2f: type = class_type @Optional, @Optional(%OptionalStorage.facet.ada) [concrete] +// CHECK:STDOUT: %specific_impl_fn.fca: = specific_impl_function %impl.elem3.d57, @Iterate.WithSelf.Next(%Iterate.facet.dbf) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.436: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.ada) [concrete] +// CHECK:STDOUT: %Optional.HasValue.fbf: %Optional.HasValue.type.436 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.f8c: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.ada) [concrete] +// CHECK:STDOUT: %Optional.Get.c12: %Optional.Get.type.f8c = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.4e5: %Destroy.type = facet_value %ValueType, (%custom_witness.e7a31c.1) [concrete] // CHECK:STDOUT: %MaybeUnformed.02e: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.4e5) [concrete] // CHECK:STDOUT: %.98c: type = maybe_unformed_type %ValueType [concrete] // CHECK:STDOUT: %struct_type.value.has_value.761: type = struct_type {.value: %MaybeUnformed.02e, .has_value: bool} [concrete] -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.988, @Optional.HasValue(%OptionalStorage.facet.705) [concrete] -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.59c, @Optional.Get(%OptionalStorage.facet.705) [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.fbf, @Optional.HasValue(%OptionalStorage.facet.ada) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.c12, @Optional.Get(%OptionalStorage.facet.ada) [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk.type: type = fn_type @operator_PlusEqual__carbon_thunk [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk: %operator_PlusEqual__carbon_thunk.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.7: type = fn_type @Destroy.Op.loc44_29.6 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.7: %Destroy.Op.type.1d8f74.7 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.ff8: = lookup_impl_witness %impl.elem1.411, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type.d67: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.411) [symbolic] -// CHECK:STDOUT: %.4b9: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.d67, %impl.elem1.411 [symbolic] -// CHECK:STDOUT: %impl.elem0.fbe: %.4b9 = impl_witness_access %Destroy.lookup_impl_witness.ff8, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.517: = specific_impl_function %impl.elem0.fbe, @Destroy.WithSelf.Op(%impl.elem1.411) [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.b29: = lookup_impl_witness %impl.elem1.3cf, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type.d9c: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.3cf) [symbolic] +// CHECK:STDOUT: %.98a: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.d9c, %impl.elem1.3cf [symbolic] +// CHECK:STDOUT: %impl.elem0.81b: %.98a = impl_witness_access %Destroy.lookup_impl_witness.b29, element0 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.bf3: = specific_impl_function %impl.elem0.81b, @Destroy.WithSelf.Op(%impl.elem1.3cf) [symbolic] // CHECK:STDOUT: %MutableRange: type = class_type @MutableRange [concrete] // CHECK:STDOUT: %pattern_type.e635: type = pattern_type %MutableRange [concrete] // CHECK:STDOUT: %ConstRange: type = class_type @ConstRange [concrete] @@ -1503,13 +1503,13 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.Op.1a2547.8: %Destroy.Op.type.1d8f74.8 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.8: = custom_witness (%Destroy.Op.1a2547.8), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.305: %Destroy.type = facet_value %tuple.type.829, (%custom_witness.df9cc1.8) [concrete] -// CHECK:STDOUT: %Iterate.impl_witness.096: = impl_witness imports.%Iterate.impl_witness_table.344, @R.as_type.as.Iterate.impl(%facet_value.55a) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.c00: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.55a) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.498: %R.as_type.as.Iterate.impl.NewCursor.type.c00 = struct_value () [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.d64: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.55a) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.055: %R.as_type.as.Iterate.impl.Next.type.d64 = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet.723: %Iterate.type = facet_value %MutableRange, (%Iterate.impl_witness.096) [concrete] -// CHECK:STDOUT: %facet_value.150: %Iterate_where.type.dfc = facet_value %MutableRange, (%Iterate.impl_witness.096) [concrete] +// CHECK:STDOUT: %Iterate.impl_witness.af4: = impl_witness imports.%Iterate.impl_witness_table.ccd, @R.as_type.as.Iterate.impl(%facet_value.55a) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.ba0: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.55a) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.435: %R.as_type.as.Iterate.impl.NewCursor.type.ba0 = struct_value () [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.52b: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.55a) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.687: %R.as_type.as.Iterate.impl.Next.type.52b = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet.cc7: %Iterate.type = facet_value %MutableRange, (%Iterate.impl_witness.af4) [concrete] +// CHECK:STDOUT: %facet_value.c11: %Iterate_where.type.502 = facet_value %MutableRange, (%Iterate.impl_witness.af4) [concrete] // CHECK:STDOUT: %r.patt.f69: %pattern_type.e635 = ref_binding_pattern r [concrete] // CHECK:STDOUT: %r.param_patt.91e: %pattern_type.e635 = var_param_pattern %r.patt.f69 [concrete] // CHECK:STDOUT: %Iterator.260: type = class_type @Iterator.2 [concrete] @@ -1548,29 +1548,29 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.Op.1a2547.9: %Destroy.Op.type.1d8f74.9 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.9: = custom_witness (%Destroy.Op.1a2547.9), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.e08: %Destroy.type = facet_value %tuple.type.99f, (%custom_witness.df9cc1.9) [concrete] -// CHECK:STDOUT: %Iterate.impl_witness.40c: = impl_witness imports.%Iterate.impl_witness_table.344, @R.as_type.as.Iterate.impl(%facet_value.445) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.8c3: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.445) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.bd2: %R.as_type.as.Iterate.impl.NewCursor.type.8c3 = struct_value () [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.b0c: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.445) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c50: %R.as_type.as.Iterate.impl.Next.type.b0c = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet.c46: %Iterate.type = facet_value %ConstRange, (%Iterate.impl_witness.40c) [concrete] -// CHECK:STDOUT: %facet_value.e78: %Iterate_where.type.dfc = facet_value %ConstRange, (%Iterate.impl_witness.40c) [concrete] +// CHECK:STDOUT: %Iterate.impl_witness.534: = impl_witness imports.%Iterate.impl_witness_table.ccd, @R.as_type.as.Iterate.impl(%facet_value.445) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.010: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.445) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.d09: %R.as_type.as.Iterate.impl.NewCursor.type.010 = struct_value () [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.fca: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.445) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.dce: %R.as_type.as.Iterate.impl.Next.type.fca = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet.f61: %Iterate.type = facet_value %ConstRange, (%Iterate.impl_witness.534) [concrete] +// CHECK:STDOUT: %facet_value.877: %Iterate_where.type.502 = facet_value %ConstRange, (%Iterate.impl_witness.534) [concrete] // CHECK:STDOUT: %r.patt.36a: %pattern_type.0ba = ref_binding_pattern r [concrete] // CHECK:STDOUT: %r.param_patt.501: %pattern_type.0ba = var_param_pattern %r.patt.36a [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.47d: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.723) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.6f1: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.723) [concrete] -// CHECK:STDOUT: %.47d: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.47d, %Iterate.facet.723 [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn.532: = specific_function %R.as_type.as.Iterate.impl.NewCursor.498, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.55a) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.7c9: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.cc7) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.464: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.cc7) [concrete] +// CHECK:STDOUT: %.753: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.7c9, %Iterate.facet.cc7 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn.f09: = specific_function %R.as_type.as.Iterate.impl.NewCursor.435, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.55a) [concrete] // CHECK:STDOUT: %ptr.d6b: type = ptr_type %tuple.type.829 [concrete] -// CHECK:STDOUT: %.fd2: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.6f1, %Iterate.facet.723 [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn.5cb: = specific_function %R.as_type.as.Iterate.impl.Next.055, @R.as_type.as.Iterate.impl.Next(%facet_value.55a) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.cd5: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.c46) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.285: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.c46) [concrete] -// CHECK:STDOUT: %.763: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.cd5, %Iterate.facet.c46 [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn.7c7: = specific_function %R.as_type.as.Iterate.impl.NewCursor.bd2, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.445) [concrete] +// CHECK:STDOUT: %.010: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.464, %Iterate.facet.cc7 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn.5bb: = specific_function %R.as_type.as.Iterate.impl.Next.687, @R.as_type.as.Iterate.impl.Next(%facet_value.55a) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.f50: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.f61) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.724: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.f61) [concrete] +// CHECK:STDOUT: %.0be: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.f50, %Iterate.facet.f61 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn.749: = specific_function %R.as_type.as.Iterate.impl.NewCursor.d09, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.445) [concrete] // CHECK:STDOUT: %ptr.2f7: type = ptr_type %tuple.type.99f [concrete] -// CHECK:STDOUT: %.bca: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.285, %Iterate.facet.c46 [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn.a9a: = specific_function %R.as_type.as.Iterate.impl.Next.c50, @R.as_type.as.Iterate.impl.Next(%facet_value.445) [concrete] +// CHECK:STDOUT: %.c98: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.724, %Iterate.facet.f61 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn.f0e: = specific_function %R.as_type.as.Iterate.impl.Next.dce, @R.as_type.as.Iterate.impl.Next(%facet_value.445) [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.e30: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.e08) [concrete] // CHECK:STDOUT: %.987: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.e30, %Destroy.facet.e08 [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.c89: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.305) [concrete] @@ -1589,12 +1589,12 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Core.import_ref.bb6: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.e9e) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6cd)] // CHECK:STDOUT: %Core.import_ref.daba: @Optional.%Optional.Get.type (%Optional.Get.type.bb9) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.fa1)] // CHECK:STDOUT: %Core.import_ref.0c6: type = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%DefaultOptionalStorage (constants.%DefaultOptionalStorage.d50)] -// CHECK:STDOUT: %Core.import_ref.f4f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.300) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.f54)] -// CHECK:STDOUT: %Core.import_ref.18f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.800) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.e83)] -// CHECK:STDOUT: %Core.import_ref.c68: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.4bc) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.dc2)] -// CHECK:STDOUT: %Core.import_ref.a83: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.029) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.cb5)] -// CHECK:STDOUT: %Core.import_ref.aaa = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.655 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.f4f, %Core.import_ref.18f, %Core.import_ref.c68, %Core.import_ref.a83, %Core.import_ref.aaa), @T.as_type.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.6d6: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.f62) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.faf)] +// CHECK:STDOUT: %Core.import_ref.6f3: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.973) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.c3a)] +// CHECK:STDOUT: %Core.import_ref.af2: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.d76) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.aa4)] +// CHECK:STDOUT: %Core.import_ref.e31: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.671) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.a54)] +// CHECK:STDOUT: %Core.import_ref.cea = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.199 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.6d6, %Core.import_ref.6f3, %Core.import_ref.af2, %Core.import_ref.e31, %Core.import_ref.cea), @T.as_type.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %ValueType.decl: type = class_decl @ValueType [concrete = constants.%ValueType] {} {} // CHECK:STDOUT: %ValueType.cpp_destructor.decl: %ValueType.cpp_destructor.type = fn_decl @ValueType.cpp_destructor [concrete = constants.%ValueType.cpp_destructor] { // CHECK:STDOUT: @@ -1603,9 +1603,9 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import_ref.301: %facet_type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%facet_value (constants.%facet_value.194)] // CHECK:STDOUT: %Core.import_ref.89f: %Destroy.type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%Destroy.facet (constants.%Destroy.facet.593)] -// CHECK:STDOUT: %Core.import_ref.3e6: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.36f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.29b)] -// CHECK:STDOUT: %Core.import_ref.85d: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.1f7) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.0d6)] -// CHECK:STDOUT: %Iterate.impl_witness_table.344 = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.3e6, %Core.import_ref.85d), @R.as_type.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.940: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.127) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.627)] +// CHECK:STDOUT: %Core.import_ref.fe7: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.d8f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.c6d)] +// CHECK:STDOUT: %Iterate.impl_witness_table.ccd = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.940, %Core.import_ref.fe7), @R.as_type.as.Iterate.impl [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk.decl: %operator_PlusEqual__carbon_thunk.type = fn_decl @operator_PlusEqual__carbon_thunk [concrete = constants.%operator_PlusEqual__carbon_thunk] { // CHECK:STDOUT: // CHECK:STDOUT: } { @@ -1615,85 +1615,85 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ConstRange.decl: type = class_decl @ConstRange [concrete = constants.%ConstRange] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TestIterate(%R.loc40_17.2: %Iterate_where.type.dfc) { +// CHECK:STDOUT: generic fn @TestIterate(%R.loc40_17.2: %Iterate_where.type.502) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc40_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.acc)] -// CHECK:STDOUT: %Iterate.facet.loc44_29.5: %Iterate.type = facet_value %R.as_type.loc40_76.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc44_29.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.d69)] -// CHECK:STDOUT: %.loc44_29.20: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc44_29.5 [symbolic = %.loc44_29.20 (constants.%.f8a)] -// CHECK:STDOUT: %impl.elem2.loc44_29.2: @TestIterate.%.loc44_29.20 (%.f8a) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc44_29.2 (constants.%impl.elem2.398)] -// CHECK:STDOUT: %specific_impl_fn.loc44_29.4: = specific_impl_function %impl.elem2.loc44_29.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc44_29.5) [symbolic = %specific_impl_fn.loc44_29.4 (constants.%specific_impl_fn.544)] +// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc40_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.06b)] +// CHECK:STDOUT: %Iterate.facet.loc44_29.5: %Iterate.type = facet_value %R.as_type.loc40_76.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc44_29.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.1b1)] +// CHECK:STDOUT: %.loc44_29.20: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc44_29.5 [symbolic = %.loc44_29.20 (constants.%.1c2)] +// CHECK:STDOUT: %impl.elem2.loc44_29.2: @TestIterate.%.loc44_29.20 (%.1c2) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc44_29.2 (constants.%impl.elem2.49b)] +// CHECK:STDOUT: %specific_impl_fn.loc44_29.4: = specific_impl_function %impl.elem2.loc44_29.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc44_29.5) [symbolic = %specific_impl_fn.loc44_29.4 (constants.%specific_impl_fn.6f3)] // CHECK:STDOUT: -// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.bdd)] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc44_29.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.d6f)] -// CHECK:STDOUT: %.loc44_29.21: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc44_29.5 [symbolic = %.loc44_29.21 (constants.%.52a)] -// CHECK:STDOUT: %impl.elem3.loc44_29.2: @TestIterate.%.loc44_29.21 (%.52a) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc44_29.2 (constants.%impl.elem3.510)] -// CHECK:STDOUT: %specific_impl_fn.loc44_29.5: = specific_impl_function %impl.elem3.loc44_29.2, @Iterate.WithSelf.Next(%Iterate.facet.loc44_29.5) [symbolic = %specific_impl_fn.loc44_29.5 (constants.%specific_impl_fn.a00)] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.d67)] -// CHECK:STDOUT: %.loc44_29.22: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc44_29.22 (constants.%.4b9)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.ff8)] -// CHECK:STDOUT: %impl.elem0.loc44_29.2: @TestIterate.%.loc44_29.22 (%.4b9) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc44_29.2 (constants.%impl.elem0.fbe)] -// CHECK:STDOUT: %specific_impl_fn.loc44_29.6: = specific_impl_function %impl.elem0.loc44_29.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc44_29.6 (constants.%specific_impl_fn.517)] +// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.bde)] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc44_29.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.705)] +// CHECK:STDOUT: %.loc44_29.21: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc44_29.5 [symbolic = %.loc44_29.21 (constants.%.bd3)] +// CHECK:STDOUT: %impl.elem3.loc44_29.2: @TestIterate.%.loc44_29.21 (%.bd3) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc44_29.2 (constants.%impl.elem3.d57)] +// CHECK:STDOUT: %specific_impl_fn.loc44_29.5: = specific_impl_function %impl.elem3.loc44_29.2, @Iterate.WithSelf.Next(%Iterate.facet.loc44_29.5) [symbolic = %specific_impl_fn.loc44_29.5 (constants.%specific_impl_fn.fca)] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.d9c)] +// CHECK:STDOUT: %.loc44_29.22: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc44_29.22 (constants.%.98a)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.b29)] +// CHECK:STDOUT: %impl.elem0.loc44_29.2: @TestIterate.%.loc44_29.22 (%.98a) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc44_29.2 (constants.%impl.elem0.81b)] +// CHECK:STDOUT: %specific_impl_fn.loc44_29.6: = specific_impl_function %impl.elem0.loc44_29.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc44_29.6 (constants.%specific_impl_fn.bf3)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%r.param: ref @TestIterate.%R.as_type.loc40_76.1 (%R.as_type.f62)) { +// CHECK:STDOUT: fn(%r.param: ref @TestIterate.%R.as_type.loc40_76.1 (%R.as_type.f55)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %i.patt: %pattern_type.e9f = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } -// CHECK:STDOUT: %r.ref: ref @TestIterate.%R.as_type.loc40_76.1 (%R.as_type.f62) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc44_29.1: @TestIterate.%.loc44_29.20 (%.f8a) = impl_witness_access constants.%Iterate.lookup_impl_witness.acc, element2 [symbolic = %impl.elem2.loc44_29.2 (constants.%impl.elem2.398)] +// CHECK:STDOUT: %r.ref: ref @TestIterate.%R.as_type.loc40_76.1 (%R.as_type.f55) = name_ref r, %r +// CHECK:STDOUT: %impl.elem2.loc44_29.1: @TestIterate.%.loc44_29.20 (%.1c2) = impl_witness_access constants.%Iterate.lookup_impl_witness.06b, element2 [symbolic = %impl.elem2.loc44_29.2 (constants.%impl.elem2.49b)] // CHECK:STDOUT: %bound_method.loc44_29.1: = bound_method %r.ref, %impl.elem2.loc44_29.1 -// CHECK:STDOUT: %Iterate.facet.loc44_29.1: %Iterate.type = facet_value constants.%R.as_type.f62, (constants.%Iterate.lookup_impl_witness.acc) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %.loc44_29.1: %Iterate.type = converted constants.%R.as_type.f62, %Iterate.facet.loc44_29.1 [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %Iterate.facet.loc44_29.2: %Iterate.type = facet_value constants.%R.as_type.f62, (constants.%Iterate.lookup_impl_witness.acc) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %.loc44_29.2: %Iterate.type = converted constants.%R.as_type.f62, %Iterate.facet.loc44_29.2 [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %specific_impl_fn.loc44_29.1: = specific_impl_function %impl.elem2.loc44_29.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.b95) [symbolic = %specific_impl_fn.loc44_29.4 (constants.%specific_impl_fn.544)] +// CHECK:STDOUT: %Iterate.facet.loc44_29.1: %Iterate.type = facet_value constants.%R.as_type.f55, (constants.%Iterate.lookup_impl_witness.06b) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %.loc44_29.1: %Iterate.type = converted constants.%R.as_type.f55, %Iterate.facet.loc44_29.1 [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %Iterate.facet.loc44_29.2: %Iterate.type = facet_value constants.%R.as_type.f55, (constants.%Iterate.lookup_impl_witness.06b) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %.loc44_29.2: %Iterate.type = converted constants.%R.as_type.f55, %Iterate.facet.loc44_29.2 [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %specific_impl_fn.loc44_29.1: = specific_impl_function %impl.elem2.loc44_29.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.dbf) [symbolic = %specific_impl_fn.loc44_29.4 (constants.%specific_impl_fn.6f3)] // CHECK:STDOUT: %bound_method.loc44_29.2: = bound_method %r.ref, %specific_impl_fn.loc44_29.1 -// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.bc6) = var_storage invalid -// CHECK:STDOUT: %.loc44_28.1: @TestIterate.%R.as_type.loc40_76.1 (%R.as_type.f62) = acquire_value %r.ref -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.bc6) to %var = call %bound_method.loc44_29.2(%.loc44_28.1) +// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.dbb) = var_storage invalid +// CHECK:STDOUT: %.loc44_28.1: @TestIterate.%R.as_type.loc40_76.1 (%R.as_type.f55) = acquire_value %r.ref +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.dbb) to %var = call %bound_method.loc44_29.2(%.loc44_28.1) // CHECK:STDOUT: assign %var, %Iterate.WithSelf.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr.loc44: @TestIterate.%ptr (%ptr.bdd) = addr_of %var -// CHECK:STDOUT: %impl.elem3.loc44_29.1: @TestIterate.%.loc44_29.21 (%.52a) = impl_witness_access constants.%Iterate.lookup_impl_witness.acc, element3 [symbolic = %impl.elem3.loc44_29.2 (constants.%impl.elem3.510)] +// CHECK:STDOUT: %addr.loc44: @TestIterate.%ptr (%ptr.bde) = addr_of %var +// CHECK:STDOUT: %impl.elem3.loc44_29.1: @TestIterate.%.loc44_29.21 (%.bd3) = impl_witness_access constants.%Iterate.lookup_impl_witness.06b, element3 [symbolic = %impl.elem3.loc44_29.2 (constants.%impl.elem3.d57)] // CHECK:STDOUT: %bound_method.loc44_29.3: = bound_method %r.ref, %impl.elem3.loc44_29.1 -// CHECK:STDOUT: %Iterate.facet.loc44_29.3: %Iterate.type = facet_value constants.%R.as_type.f62, (constants.%Iterate.lookup_impl_witness.acc) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %.loc44_29.3: %Iterate.type = converted constants.%R.as_type.f62, %Iterate.facet.loc44_29.3 [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %Iterate.facet.loc44_29.4: %Iterate.type = facet_value constants.%R.as_type.f62, (constants.%Iterate.lookup_impl_witness.acc) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %.loc44_29.4: %Iterate.type = converted constants.%R.as_type.f62, %Iterate.facet.loc44_29.4 [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.b95)] -// CHECK:STDOUT: %.loc44_29.5: %Destroy.type = converted constants.%as_type.bc6, constants.%impl.elem1.411 [symbolic = %impl.elem1 (constants.%impl.elem1.411)] -// CHECK:STDOUT: %.loc44_29.6: %Destroy.type = converted constants.%as_type.bc6, constants.%impl.elem1.411 [symbolic = %impl.elem1 (constants.%impl.elem1.411)] -// CHECK:STDOUT: %specific_impl_fn.loc44_29.2: = specific_impl_function %impl.elem3.loc44_29.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.b95) [symbolic = %specific_impl_fn.loc44_29.5 (constants.%specific_impl_fn.a00)] +// CHECK:STDOUT: %Iterate.facet.loc44_29.3: %Iterate.type = facet_value constants.%R.as_type.f55, (constants.%Iterate.lookup_impl_witness.06b) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %.loc44_29.3: %Iterate.type = converted constants.%R.as_type.f55, %Iterate.facet.loc44_29.3 [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %Iterate.facet.loc44_29.4: %Iterate.type = facet_value constants.%R.as_type.f55, (constants.%Iterate.lookup_impl_witness.06b) [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %.loc44_29.4: %Iterate.type = converted constants.%R.as_type.f55, %Iterate.facet.loc44_29.4 [symbolic = %Iterate.facet.loc44_29.5 (constants.%Iterate.facet.dbf)] +// CHECK:STDOUT: %.loc44_29.5: %Destroy.type = converted constants.%as_type.dbb, constants.%impl.elem1.3cf [symbolic = %impl.elem1 (constants.%impl.elem1.3cf)] +// CHECK:STDOUT: %.loc44_29.6: %Destroy.type = converted constants.%as_type.dbb, constants.%impl.elem1.3cf [symbolic = %impl.elem1 (constants.%impl.elem1.3cf)] +// CHECK:STDOUT: %specific_impl_fn.loc44_29.2: = specific_impl_function %impl.elem3.loc44_29.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.dbf) [symbolic = %specific_impl_fn.loc44_29.5 (constants.%specific_impl_fn.fca)] // CHECK:STDOUT: %bound_method.loc44_29.4: = bound_method %r.ref, %specific_impl_fn.loc44_29.2 -// CHECK:STDOUT: %.loc44_29.7: ref %Optional.95f = temporary_storage -// CHECK:STDOUT: %.loc44_28.2: @TestIterate.%R.as_type.loc40_76.1 (%R.as_type.f62) = acquire_value %r.ref -// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.95f to %.loc44_29.7 = call %bound_method.loc44_29.4(%.loc44_28.2, %addr.loc44) -// CHECK:STDOUT: %.loc44_29.8: ref %Optional.95f = temporary %.loc44_29.7, %Iterate.WithSelf.Next.call -// CHECK:STDOUT: %.loc44_29.9: %Optional.HasValue.type.006 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.HasValue.988] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.006 = name_ref HasValue, %.loc44_29.9 [concrete = constants.%Optional.HasValue.988] +// CHECK:STDOUT: %.loc44_29.7: ref %Optional.f2f = temporary_storage +// CHECK:STDOUT: %.loc44_28.2: @TestIterate.%R.as_type.loc40_76.1 (%R.as_type.f55) = acquire_value %r.ref +// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.f2f to %.loc44_29.7 = call %bound_method.loc44_29.4(%.loc44_28.2, %addr.loc44) +// CHECK:STDOUT: %.loc44_29.8: ref %Optional.f2f = temporary %.loc44_29.7, %Iterate.WithSelf.Next.call +// CHECK:STDOUT: %.loc44_29.9: %Optional.HasValue.type.436 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.HasValue.fbf] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.436 = name_ref HasValue, %.loc44_29.9 [concrete = constants.%Optional.HasValue.fbf] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc44_29.8, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc44_29.5: = bound_method %.loc44_29.8, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc44_29.10: %Optional.95f = acquire_value %.loc44_29.8 +// CHECK:STDOUT: %.loc44_29.10: %Optional.f2f = acquire_value %.loc44_29.8 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc44_29.5(%.loc44_29.10) // CHECK:STDOUT: %.loc44_29.11: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc44_29.12: bool = converted %Optional.HasValue.call, %.loc44_29.11 // CHECK:STDOUT: if %.loc44_29.12 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc44_29.13: %Optional.Get.type.30f = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.Get.59c] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.30f = name_ref Get, %.loc44_29.13 [concrete = constants.%Optional.Get.59c] +// CHECK:STDOUT: %.loc44_29.13: %Optional.Get.type.f8c = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.Get.c12] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.f8c = name_ref Get, %.loc44_29.13 [concrete = constants.%Optional.Get.c12] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc44_29.8, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc44_29.6: = bound_method %.loc44_29.8, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc44_29.14: ref %ValueType = temporary_storage -// CHECK:STDOUT: %.loc44_29.15: %Optional.95f = acquire_value %.loc44_29.8 +// CHECK:STDOUT: %.loc44_29.15: %Optional.f2f = acquire_value %.loc44_29.8 // CHECK:STDOUT: %Optional.Get.call: init %ValueType to %.loc44_29.14 = call %bound_method.loc44_29.6(%.loc44_29.15) // CHECK:STDOUT: %.loc44_29.16: ref %ValueType = temporary %.loc44_29.14, %Optional.Get.call // CHECK:STDOUT: %.loc44_29.17: %ValueType = acquire_value %.loc44_29.16 @@ -1718,11 +1718,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ValueType.cpp_destructor.call.loc44: init %empty_tuple.type = call %ValueType.cpp_destructor.bound.loc44(%.loc44_29.16) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc44_29.8, constants.%Destroy.Op.1a2547.7 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc44_29.8) -// CHECK:STDOUT: %impl.elem0.loc44_29.1: @TestIterate.%.loc44_29.22 (%.4b9) = impl_witness_access constants.%Destroy.lookup_impl_witness.ff8, element0 [symbolic = %impl.elem0.loc44_29.2 (constants.%impl.elem0.fbe)] +// CHECK:STDOUT: %impl.elem0.loc44_29.1: @TestIterate.%.loc44_29.22 (%.98a) = impl_witness_access constants.%Destroy.lookup_impl_witness.b29, element0 [symbolic = %impl.elem0.loc44_29.2 (constants.%impl.elem0.81b)] // CHECK:STDOUT: %bound_method.loc44_29.7: = bound_method %var, %impl.elem0.loc44_29.1 -// CHECK:STDOUT: %.loc44_29.18: %Destroy.type = converted constants.%as_type.bc6, constants.%impl.elem1.411 [symbolic = %impl.elem1 (constants.%impl.elem1.411)] -// CHECK:STDOUT: %.loc44_29.19: %Destroy.type = converted constants.%as_type.bc6, constants.%impl.elem1.411 [symbolic = %impl.elem1 (constants.%impl.elem1.411)] -// CHECK:STDOUT: %specific_impl_fn.loc44_29.3: = specific_impl_function %impl.elem0.loc44_29.1, @Destroy.WithSelf.Op(constants.%impl.elem1.411) [symbolic = %specific_impl_fn.loc44_29.6 (constants.%specific_impl_fn.517)] +// CHECK:STDOUT: %.loc44_29.18: %Destroy.type = converted constants.%as_type.dbb, constants.%impl.elem1.3cf [symbolic = %impl.elem1 (constants.%impl.elem1.3cf)] +// CHECK:STDOUT: %.loc44_29.19: %Destroy.type = converted constants.%as_type.dbb, constants.%impl.elem1.3cf [symbolic = %impl.elem1 (constants.%impl.elem1.3cf)] +// CHECK:STDOUT: %specific_impl_fn.loc44_29.3: = specific_impl_function %impl.elem0.loc44_29.1, @Destroy.WithSelf.Op(constants.%impl.elem1.3cf) [symbolic = %specific_impl_fn.loc44_29.6 (constants.%specific_impl_fn.bf3)] // CHECK:STDOUT: %bound_method.loc44_29.8: = bound_method %var, %specific_impl_fn.loc44_29.3 // CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc44_29.8(%var) // CHECK:STDOUT: @@ -1761,7 +1761,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc44_29.6(%self.param: ref %Optional.95f) { +// CHECK:STDOUT: fn @Destroy.Op.loc44_29.6(%self.param: ref %Optional.f2f) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -1775,13 +1775,13 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.patt.loc59: %pattern_type.e9f = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %m.ref: ref %MutableRange = name_ref m, %m -// CHECK:STDOUT: %impl.elem2.loc59: %.47d = impl_witness_access constants.%Iterate.impl_witness.096, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.498] +// CHECK:STDOUT: %impl.elem2.loc59: %.753 = impl_witness_access constants.%Iterate.impl_witness.af4, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.435] // CHECK:STDOUT: %bound_method.loc59_29.1: = bound_method %m.ref, %impl.elem2.loc59 // CHECK:STDOUT: %facet_value.loc59_29.1: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.e7a31c.1, constants.%custom_witness.d0da43.1, constants.%custom_witness.6b6, constants.%custom_witness.95581e.1, constants.%custom_witness.1f52e9.1, constants.%custom_witness.90a, constants.%custom_witness.3e8, constants.%custom_witness.444, constants.%custom_witness.95581e.2, constants.%custom_witness.1f52e9.2) [concrete = constants.%facet_value.55a] // CHECK:STDOUT: %.loc59_29.1: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc59_29.1 [concrete = constants.%facet_value.55a] // CHECK:STDOUT: %facet_value.loc59_29.2: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.e7a31c.1, constants.%custom_witness.d0da43.1, constants.%custom_witness.6b6, constants.%custom_witness.95581e.1, constants.%custom_witness.1f52e9.1, constants.%custom_witness.90a, constants.%custom_witness.3e8, constants.%custom_witness.444, constants.%custom_witness.95581e.2, constants.%custom_witness.1f52e9.2) [concrete = constants.%facet_value.55a] // CHECK:STDOUT: %.loc59_29.2: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc59_29.2 [concrete = constants.%facet_value.55a] -// CHECK:STDOUT: %specific_fn.loc59_29.1: = specific_function %impl.elem2.loc59, @R.as_type.as.Iterate.impl.NewCursor(constants.%facet_value.55a) [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.532] +// CHECK:STDOUT: %specific_fn.loc59_29.1: = specific_function %impl.elem2.loc59, @R.as_type.as.Iterate.impl.NewCursor(constants.%facet_value.55a) [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.f09] // CHECK:STDOUT: %bound_method.loc59_29.2: = bound_method %m.ref, %specific_fn.loc59_29.1 // CHECK:STDOUT: %var.loc59: ref %tuple.type.829 = var_storage invalid // CHECK:STDOUT: %.loc59_28.1: %MutableRange = acquire_value %m.ref @@ -1791,37 +1791,37 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !for.next.loc59: // CHECK:STDOUT: %addr.loc59: %ptr.d6b = addr_of %var.loc59 -// CHECK:STDOUT: %impl.elem3.loc59: %.fd2 = impl_witness_access constants.%Iterate.impl_witness.096, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.055] +// CHECK:STDOUT: %impl.elem3.loc59: %.010 = impl_witness_access constants.%Iterate.impl_witness.af4, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.687] // CHECK:STDOUT: %bound_method.loc59_29.3: = bound_method %m.ref, %impl.elem3.loc59 // CHECK:STDOUT: %facet_value.loc59_29.3: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.e7a31c.1, constants.%custom_witness.d0da43.1, constants.%custom_witness.6b6, constants.%custom_witness.95581e.1, constants.%custom_witness.1f52e9.1, constants.%custom_witness.90a, constants.%custom_witness.3e8, constants.%custom_witness.444, constants.%custom_witness.95581e.2, constants.%custom_witness.1f52e9.2) [concrete = constants.%facet_value.55a] // CHECK:STDOUT: %.loc59_29.3: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc59_29.3 [concrete = constants.%facet_value.55a] // CHECK:STDOUT: %facet_value.loc59_29.4: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.e7a31c.1, constants.%custom_witness.d0da43.1, constants.%custom_witness.6b6, constants.%custom_witness.95581e.1, constants.%custom_witness.1f52e9.1, constants.%custom_witness.90a, constants.%custom_witness.3e8, constants.%custom_witness.444, constants.%custom_witness.95581e.2, constants.%custom_witness.1f52e9.2) [concrete = constants.%facet_value.55a] // CHECK:STDOUT: %.loc59_29.4: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc59_29.4 [concrete = constants.%facet_value.55a] -// CHECK:STDOUT: %specific_fn.loc59_29.2: = specific_function %impl.elem3.loc59, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.55a) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn.5cb] +// CHECK:STDOUT: %specific_fn.loc59_29.2: = specific_function %impl.elem3.loc59, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.55a) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn.5bb] // CHECK:STDOUT: %bound_method.loc59_29.4: = bound_method %m.ref, %specific_fn.loc59_29.2 -// CHECK:STDOUT: %.loc59_29.5: ref %Optional.95f = temporary_storage +// CHECK:STDOUT: %.loc59_29.5: ref %Optional.f2f = temporary_storage // CHECK:STDOUT: %.loc59_28.2: %MutableRange = acquire_value %m.ref -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call.loc59: init %Optional.95f to %.loc59_29.5 = call %bound_method.loc59_29.4(%.loc59_28.2, %addr.loc59) -// CHECK:STDOUT: %.loc59_29.6: ref %Optional.95f = temporary %.loc59_29.5, %R.as_type.as.Iterate.impl.Next.call.loc59 -// CHECK:STDOUT: %.loc59_29.7: %Optional.HasValue.type.006 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.HasValue.988] -// CHECK:STDOUT: %HasValue.ref.loc59: %Optional.HasValue.type.006 = name_ref HasValue, %.loc59_29.7 [concrete = constants.%Optional.HasValue.988] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call.loc59: init %Optional.f2f to %.loc59_29.5 = call %bound_method.loc59_29.4(%.loc59_28.2, %addr.loc59) +// CHECK:STDOUT: %.loc59_29.6: ref %Optional.f2f = temporary %.loc59_29.5, %R.as_type.as.Iterate.impl.Next.call.loc59 +// CHECK:STDOUT: %.loc59_29.7: %Optional.HasValue.type.436 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.HasValue.fbf] +// CHECK:STDOUT: %HasValue.ref.loc59: %Optional.HasValue.type.436 = name_ref HasValue, %.loc59_29.7 [concrete = constants.%Optional.HasValue.fbf] // CHECK:STDOUT: %Optional.HasValue.bound.loc59: = bound_method %.loc59_29.6, %HasValue.ref.loc59 -// CHECK:STDOUT: %Optional.HasValue.specific_fn.loc59: = specific_function %HasValue.ref.loc59, @Optional.HasValue(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn.loc59: = specific_function %HasValue.ref.loc59, @Optional.HasValue(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc59_29.5: = bound_method %.loc59_29.6, %Optional.HasValue.specific_fn.loc59 -// CHECK:STDOUT: %.loc59_29.8: %Optional.95f = acquire_value %.loc59_29.6 +// CHECK:STDOUT: %.loc59_29.8: %Optional.f2f = acquire_value %.loc59_29.6 // CHECK:STDOUT: %Optional.HasValue.call.loc59: init bool = call %bound_method.loc59_29.5(%.loc59_29.8) // CHECK:STDOUT: %.loc59_29.9: bool = value_of_initializer %Optional.HasValue.call.loc59 // CHECK:STDOUT: %.loc59_29.10: bool = converted %Optional.HasValue.call.loc59, %.loc59_29.9 // CHECK:STDOUT: if %.loc59_29.10 br !for.body.loc59 else br !for.done.loc59 // CHECK:STDOUT: // CHECK:STDOUT: !for.body.loc59: -// CHECK:STDOUT: %.loc59_29.11: %Optional.Get.type.30f = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.Get.59c] -// CHECK:STDOUT: %Get.ref.loc59: %Optional.Get.type.30f = name_ref Get, %.loc59_29.11 [concrete = constants.%Optional.Get.59c] +// CHECK:STDOUT: %.loc59_29.11: %Optional.Get.type.f8c = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.Get.c12] +// CHECK:STDOUT: %Get.ref.loc59: %Optional.Get.type.f8c = name_ref Get, %.loc59_29.11 [concrete = constants.%Optional.Get.c12] // CHECK:STDOUT: %Optional.Get.bound.loc59: = bound_method %.loc59_29.6, %Get.ref.loc59 -// CHECK:STDOUT: %Optional.Get.specific_fn.loc59: = specific_function %Get.ref.loc59, @Optional.Get(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn.loc59: = specific_function %Get.ref.loc59, @Optional.Get(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc59_29.6: = bound_method %.loc59_29.6, %Optional.Get.specific_fn.loc59 // CHECK:STDOUT: %.loc59_29.12: ref %ValueType = temporary_storage -// CHECK:STDOUT: %.loc59_29.13: %Optional.95f = acquire_value %.loc59_29.6 +// CHECK:STDOUT: %.loc59_29.13: %Optional.f2f = acquire_value %.loc59_29.6 // CHECK:STDOUT: %Optional.Get.call.loc59: init %ValueType to %.loc59_29.12 = call %bound_method.loc59_29.6(%.loc59_29.13) // CHECK:STDOUT: %.loc59_29.14: ref %ValueType = temporary %.loc59_29.12, %Optional.Get.call.loc59 // CHECK:STDOUT: %.loc59_29.15: %ValueType = acquire_value %.loc59_29.14 @@ -1844,13 +1844,13 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.patt.loc63: %pattern_type.e9f = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %c.ref: %ConstRange = name_ref c, %c -// CHECK:STDOUT: %impl.elem2.loc63: %.763 = impl_witness_access constants.%Iterate.impl_witness.40c, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.bd2] +// CHECK:STDOUT: %impl.elem2.loc63: %.0be = impl_witness_access constants.%Iterate.impl_witness.534, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.d09] // CHECK:STDOUT: %bound_method.loc63_29.1: = bound_method %c.ref, %impl.elem2.loc63 // CHECK:STDOUT: %facet_value.loc63_29.1: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.e7a31c.1, constants.%custom_witness.d0da43.1, constants.%custom_witness.a03, constants.%custom_witness.6e8a2e.1, constants.%custom_witness.15091a.1, constants.%custom_witness.78b, constants.%custom_witness.c55, constants.%custom_witness.746, constants.%custom_witness.6e8a2e.2, constants.%custom_witness.15091a.2) [concrete = constants.%facet_value.445] // CHECK:STDOUT: %.loc63_29.1: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc63_29.1 [concrete = constants.%facet_value.445] // CHECK:STDOUT: %facet_value.loc63_29.2: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.e7a31c.1, constants.%custom_witness.d0da43.1, constants.%custom_witness.a03, constants.%custom_witness.6e8a2e.1, constants.%custom_witness.15091a.1, constants.%custom_witness.78b, constants.%custom_witness.c55, constants.%custom_witness.746, constants.%custom_witness.6e8a2e.2, constants.%custom_witness.15091a.2) [concrete = constants.%facet_value.445] // CHECK:STDOUT: %.loc63_29.2: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc63_29.2 [concrete = constants.%facet_value.445] -// CHECK:STDOUT: %specific_fn.loc63_29.1: = specific_function %impl.elem2.loc63, @R.as_type.as.Iterate.impl.NewCursor(constants.%facet_value.445) [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.7c7] +// CHECK:STDOUT: %specific_fn.loc63_29.1: = specific_function %impl.elem2.loc63, @R.as_type.as.Iterate.impl.NewCursor(constants.%facet_value.445) [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.749] // CHECK:STDOUT: %bound_method.loc63_29.2: = bound_method %c.ref, %specific_fn.loc63_29.1 // CHECK:STDOUT: %var.loc63: ref %tuple.type.99f = var_storage invalid // CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.call.loc63: init %tuple.type.99f to %var.loc63 = call %bound_method.loc63_29.2(%c.ref) @@ -1859,36 +1859,36 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !for.next.loc63: // CHECK:STDOUT: %addr.loc63: %ptr.2f7 = addr_of %var.loc63 -// CHECK:STDOUT: %impl.elem3.loc63: %.bca = impl_witness_access constants.%Iterate.impl_witness.40c, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.c50] +// CHECK:STDOUT: %impl.elem3.loc63: %.c98 = impl_witness_access constants.%Iterate.impl_witness.534, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.dce] // CHECK:STDOUT: %bound_method.loc63_29.3: = bound_method %c.ref, %impl.elem3.loc63 // CHECK:STDOUT: %facet_value.loc63_29.3: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.e7a31c.1, constants.%custom_witness.d0da43.1, constants.%custom_witness.a03, constants.%custom_witness.6e8a2e.1, constants.%custom_witness.15091a.1, constants.%custom_witness.78b, constants.%custom_witness.c55, constants.%custom_witness.746, constants.%custom_witness.6e8a2e.2, constants.%custom_witness.15091a.2) [concrete = constants.%facet_value.445] // CHECK:STDOUT: %.loc63_29.3: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc63_29.3 [concrete = constants.%facet_value.445] // CHECK:STDOUT: %facet_value.loc63_29.4: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.e7a31c.1, constants.%custom_witness.d0da43.1, constants.%custom_witness.a03, constants.%custom_witness.6e8a2e.1, constants.%custom_witness.15091a.1, constants.%custom_witness.78b, constants.%custom_witness.c55, constants.%custom_witness.746, constants.%custom_witness.6e8a2e.2, constants.%custom_witness.15091a.2) [concrete = constants.%facet_value.445] // CHECK:STDOUT: %.loc63_29.4: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc63_29.4 [concrete = constants.%facet_value.445] -// CHECK:STDOUT: %specific_fn.loc63_29.2: = specific_function %impl.elem3.loc63, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.445) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn.a9a] +// CHECK:STDOUT: %specific_fn.loc63_29.2: = specific_function %impl.elem3.loc63, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.445) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn.f0e] // CHECK:STDOUT: %bound_method.loc63_29.4: = bound_method %c.ref, %specific_fn.loc63_29.2 -// CHECK:STDOUT: %.loc63_29.5: ref %Optional.95f = temporary_storage -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call.loc63: init %Optional.95f to %.loc63_29.5 = call %bound_method.loc63_29.4(%c.ref, %addr.loc63) -// CHECK:STDOUT: %.loc63_29.6: ref %Optional.95f = temporary %.loc63_29.5, %R.as_type.as.Iterate.impl.Next.call.loc63 -// CHECK:STDOUT: %.loc63_29.7: %Optional.HasValue.type.006 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.HasValue.988] -// CHECK:STDOUT: %HasValue.ref.loc63: %Optional.HasValue.type.006 = name_ref HasValue, %.loc63_29.7 [concrete = constants.%Optional.HasValue.988] +// CHECK:STDOUT: %.loc63_29.5: ref %Optional.f2f = temporary_storage +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call.loc63: init %Optional.f2f to %.loc63_29.5 = call %bound_method.loc63_29.4(%c.ref, %addr.loc63) +// CHECK:STDOUT: %.loc63_29.6: ref %Optional.f2f = temporary %.loc63_29.5, %R.as_type.as.Iterate.impl.Next.call.loc63 +// CHECK:STDOUT: %.loc63_29.7: %Optional.HasValue.type.436 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.HasValue.fbf] +// CHECK:STDOUT: %HasValue.ref.loc63: %Optional.HasValue.type.436 = name_ref HasValue, %.loc63_29.7 [concrete = constants.%Optional.HasValue.fbf] // CHECK:STDOUT: %Optional.HasValue.bound.loc63: = bound_method %.loc63_29.6, %HasValue.ref.loc63 -// CHECK:STDOUT: %Optional.HasValue.specific_fn.loc63: = specific_function %HasValue.ref.loc63, @Optional.HasValue(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn.loc63: = specific_function %HasValue.ref.loc63, @Optional.HasValue(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc63_29.5: = bound_method %.loc63_29.6, %Optional.HasValue.specific_fn.loc63 -// CHECK:STDOUT: %.loc63_29.8: %Optional.95f = acquire_value %.loc63_29.6 +// CHECK:STDOUT: %.loc63_29.8: %Optional.f2f = acquire_value %.loc63_29.6 // CHECK:STDOUT: %Optional.HasValue.call.loc63: init bool = call %bound_method.loc63_29.5(%.loc63_29.8) // CHECK:STDOUT: %.loc63_29.9: bool = value_of_initializer %Optional.HasValue.call.loc63 // CHECK:STDOUT: %.loc63_29.10: bool = converted %Optional.HasValue.call.loc63, %.loc63_29.9 // CHECK:STDOUT: if %.loc63_29.10 br !for.body.loc63 else br !for.done.loc63 // CHECK:STDOUT: // CHECK:STDOUT: !for.body.loc63: -// CHECK:STDOUT: %.loc63_29.11: %Optional.Get.type.30f = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.Get.59c] -// CHECK:STDOUT: %Get.ref.loc63: %Optional.Get.type.30f = name_ref Get, %.loc63_29.11 [concrete = constants.%Optional.Get.59c] +// CHECK:STDOUT: %.loc63_29.11: %Optional.Get.type.f8c = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.Get.c12] +// CHECK:STDOUT: %Get.ref.loc63: %Optional.Get.type.f8c = name_ref Get, %.loc63_29.11 [concrete = constants.%Optional.Get.c12] // CHECK:STDOUT: %Optional.Get.bound.loc63: = bound_method %.loc63_29.6, %Get.ref.loc63 -// CHECK:STDOUT: %Optional.Get.specific_fn.loc63: = specific_function %Get.ref.loc63, @Optional.Get(constants.%OptionalStorage.facet.705) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn.loc63: = specific_function %Get.ref.loc63, @Optional.Get(constants.%OptionalStorage.facet.ada) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc63_29.6: = bound_method %.loc63_29.6, %Optional.Get.specific_fn.loc63 // CHECK:STDOUT: %.loc63_29.12: ref %ValueType = temporary_storage -// CHECK:STDOUT: %.loc63_29.13: %Optional.95f = acquire_value %.loc63_29.6 +// CHECK:STDOUT: %.loc63_29.13: %Optional.f2f = acquire_value %.loc63_29.6 // CHECK:STDOUT: %Optional.Get.call.loc63: init %ValueType to %.loc63_29.12 = call %bound_method.loc63_29.6(%.loc63_29.13) // CHECK:STDOUT: %.loc63_29.14: ref %ValueType = temporary %.loc63_29.12, %Optional.Get.call.loc63 // CHECK:STDOUT: %.loc63_29.15: %ValueType = acquire_value %.loc63_29.14 @@ -1928,18 +1928,18 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%R.de1) { -// CHECK:STDOUT: %R.patt.loc40_17.2 => constants.%R.patt.f38 -// CHECK:STDOUT: %R.loc40_17.1 => constants.%R.de1 -// CHECK:STDOUT: %R.as_type.loc40_76.1 => constants.%R.as_type.f62 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.669 -// CHECK:STDOUT: %r.patt.loc40_74.2 => constants.%r.patt.c0f -// CHECK:STDOUT: %r.param_patt.loc40_69.2 => constants.%r.param_patt.bb2 +// CHECK:STDOUT: specific @TestIterate(constants.%R.0bd) { +// CHECK:STDOUT: %R.patt.loc40_17.2 => constants.%R.patt.35d +// CHECK:STDOUT: %R.loc40_17.1 => constants.%R.0bd +// CHECK:STDOUT: %R.as_type.loc40_76.1 => constants.%R.as_type.f55 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.d2d +// CHECK:STDOUT: %r.patt.loc40_74.2 => constants.%r.patt.d27 +// CHECK:STDOUT: %r.param_patt.loc40_69.2 => constants.%r.param_patt.a41 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.150) { -// CHECK:STDOUT: %R.patt.loc40_17.2 => constants.%R.patt.f38 -// CHECK:STDOUT: %R.loc40_17.1 => constants.%facet_value.150 +// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.c11) { +// CHECK:STDOUT: %R.patt.loc40_17.2 => constants.%R.patt.35d +// CHECK:STDOUT: %R.loc40_17.1 => constants.%facet_value.c11 // CHECK:STDOUT: %R.as_type.loc40_76.1 => constants.%MutableRange // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e635 // CHECK:STDOUT: %r.patt.loc40_74.2 => constants.%r.patt.f69 @@ -1947,20 +1947,20 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc40 => constants.%complete_type.357 -// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.096 -// CHECK:STDOUT: %Iterate.facet.loc44_29.5 => constants.%Iterate.facet.723 -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.47d -// CHECK:STDOUT: %.loc44_29.20 => constants.%.47d -// CHECK:STDOUT: %impl.elem2.loc44_29.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.498 -// CHECK:STDOUT: %specific_impl_fn.loc44_29.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.532 +// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.af4 +// CHECK:STDOUT: %Iterate.facet.loc44_29.5 => constants.%Iterate.facet.cc7 +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.7c9 +// CHECK:STDOUT: %.loc44_29.20 => constants.%.753 +// CHECK:STDOUT: %impl.elem2.loc44_29.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.435 +// CHECK:STDOUT: %specific_impl_fn.loc44_29.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.f09 // CHECK:STDOUT: %impl.elem1 => constants.%Destroy.facet.305 // CHECK:STDOUT: %as_type => constants.%tuple.type.829 // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.94f // CHECK:STDOUT: %ptr => constants.%ptr.d6b -// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.6f1 -// CHECK:STDOUT: %.loc44_29.21 => constants.%.fd2 -// CHECK:STDOUT: %impl.elem3.loc44_29.2 => constants.%R.as_type.as.Iterate.impl.Next.055 -// CHECK:STDOUT: %specific_impl_fn.loc44_29.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn.5cb +// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.464 +// CHECK:STDOUT: %.loc44_29.21 => constants.%.010 +// CHECK:STDOUT: %impl.elem3.loc44_29.2 => constants.%R.as_type.as.Iterate.impl.Next.687 +// CHECK:STDOUT: %specific_impl_fn.loc44_29.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn.5bb // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.c89 // CHECK:STDOUT: %.loc44_29.22 => constants.%.e8a // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%custom_witness.df9cc1.8 @@ -1968,9 +1968,9 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %specific_impl_fn.loc44_29.6 => constants.%Destroy.Op.1a2547.8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.e78) { -// CHECK:STDOUT: %R.patt.loc40_17.2 => constants.%R.patt.f38 -// CHECK:STDOUT: %R.loc40_17.1 => constants.%facet_value.e78 +// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.877) { +// CHECK:STDOUT: %R.patt.loc40_17.2 => constants.%R.patt.35d +// CHECK:STDOUT: %R.loc40_17.1 => constants.%facet_value.877 // CHECK:STDOUT: %R.as_type.loc40_76.1 => constants.%ConstRange // CHECK:STDOUT: %pattern_type => constants.%pattern_type.0ba // CHECK:STDOUT: %r.patt.loc40_74.2 => constants.%r.patt.36a @@ -1978,20 +1978,20 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc40 => constants.%complete_type.357 -// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.40c -// CHECK:STDOUT: %Iterate.facet.loc44_29.5 => constants.%Iterate.facet.c46 -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.cd5 -// CHECK:STDOUT: %.loc44_29.20 => constants.%.763 -// CHECK:STDOUT: %impl.elem2.loc44_29.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.bd2 -// CHECK:STDOUT: %specific_impl_fn.loc44_29.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.7c7 +// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.534 +// CHECK:STDOUT: %Iterate.facet.loc44_29.5 => constants.%Iterate.facet.f61 +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.f50 +// CHECK:STDOUT: %.loc44_29.20 => constants.%.0be +// CHECK:STDOUT: %impl.elem2.loc44_29.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.d09 +// CHECK:STDOUT: %specific_impl_fn.loc44_29.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn.749 // CHECK:STDOUT: %impl.elem1 => constants.%Destroy.facet.e08 // CHECK:STDOUT: %as_type => constants.%tuple.type.99f // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.dea // CHECK:STDOUT: %ptr => constants.%ptr.2f7 -// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.285 -// CHECK:STDOUT: %.loc44_29.21 => constants.%.bca -// CHECK:STDOUT: %impl.elem3.loc44_29.2 => constants.%R.as_type.as.Iterate.impl.Next.c50 -// CHECK:STDOUT: %specific_impl_fn.loc44_29.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn.a9a +// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.724 +// CHECK:STDOUT: %.loc44_29.21 => constants.%.c98 +// CHECK:STDOUT: %impl.elem3.loc44_29.2 => constants.%R.as_type.as.Iterate.impl.Next.dce +// CHECK:STDOUT: %specific_impl_fn.loc44_29.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn.f0e // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.e30 // CHECK:STDOUT: %.loc44_29.22 => constants.%.987 // CHECK:STDOUT: %Destroy.lookup_impl_witness => constants.%custom_witness.df9cc1.9 @@ -2014,17 +2014,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Optional.HasValue.6cd: %Optional.HasValue.type.e9e = struct_value () [symbolic] // CHECK:STDOUT: %T.283: %facet_type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.d50: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.029: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.cb5: %T.as_type.as.OptionalStorage.impl.Get.type.029 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.4bc: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.dc2: %T.as_type.as.OptionalStorage.impl.Has.type.4bc = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.800: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.e83: %T.as_type.as.OptionalStorage.impl.Some.type.800 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.300: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.f54: %T.as_type.as.OptionalStorage.impl.None.type.300 = struct_value () [symbolic] -// CHECK:STDOUT: %.Self.35d: %Iterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.b37: = lookup_impl_witness %.Self.35d, @Iterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.903: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.b37, element0 [symbolic_self] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.671: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.a54: %T.as_type.as.OptionalStorage.impl.Get.type.671 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.d76: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.aa4: %T.as_type.as.OptionalStorage.impl.Has.type.d76 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.973: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.c3a: %T.as_type.as.OptionalStorage.impl.Some.type.973 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.f62: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.faf: %T.as_type.as.OptionalStorage.impl.None.type.f62 = struct_value () [symbolic] // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] // CHECK:STDOUT: %N.fe9: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %f64.dc1: type = class_type @Float, @Float(%int_64) [concrete] @@ -2036,23 +2033,26 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Float.as.Copy.impl.Op.d93: %Float.as.Copy.impl.Op.type.ff3 = struct_value () [symbolic] // CHECK:STDOUT: %Copy.impl_witness.873: = impl_witness imports.%Copy.impl_witness_table.4e8, @Float.as.Copy.impl(%int_64) [concrete] // CHECK:STDOUT: %facet_value.209: %facet_type = facet_value %f64.dc1, (%custom_witness.df9cc1.2, %Copy.impl_witness.873) [concrete] -// CHECK:STDOUT: %Iterate_where.type.83b: type = facet_type <@Iterate where %impl.elem0.903 = %facet_value.209> [concrete] -// CHECK:STDOUT: %pattern_type.b62: type = pattern_type %Iterate_where.type.83b [concrete] -// CHECK:STDOUT: %R.patt.053: %pattern_type.b62 = symbolic_binding_pattern R, 0 [symbolic] -// CHECK:STDOUT: %R.7b2: %Iterate_where.type.83b = symbolic_binding R, 0 [symbolic] -// CHECK:STDOUT: %R.as_type.657: type = facet_access_type %R.7b2 [symbolic] -// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %R.as_type.657 [symbolic] -// CHECK:STDOUT: %r.param_patt.184: %pattern_type.afe = value_param_pattern [symbolic] -// CHECK:STDOUT: %r.patt.727: %pattern_type.afe = at_binding_pattern r, %r.param_patt.184 [symbolic] +// CHECK:STDOUT: %.Self.500: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.1d8: = lookup_impl_witness %.Self.500, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.294: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.1d8, element0 [symbolic_self] +// CHECK:STDOUT: %Iterate_where.type.a32: type = facet_type <@Iterate where %impl.elem0.294 = %facet_value.209> [concrete] +// CHECK:STDOUT: %pattern_type.ff5: type = pattern_type %Iterate_where.type.a32 [concrete] +// CHECK:STDOUT: %R.patt.ae1: %pattern_type.ff5 = symbolic_binding_pattern R, 0 [symbolic] +// CHECK:STDOUT: %R.c6e: %Iterate_where.type.a32 = symbolic_binding R, 0 [symbolic] +// CHECK:STDOUT: %R.as_type.087: type = facet_access_type %R.c6e [symbolic] +// CHECK:STDOUT: %pattern_type.3d7: type = pattern_type %R.as_type.087 [symbolic] +// CHECK:STDOUT: %r.param_patt.03a: %pattern_type.3d7 = value_param_pattern [symbolic] +// CHECK:STDOUT: %r.patt.b86: %pattern_type.3d7 = at_binding_pattern r, %r.param_patt.03a [symbolic] // CHECK:STDOUT: %i.patt: %pattern_type.fb7 = value_binding_pattern i [concrete] // CHECK:STDOUT: %CppRangeForIterate.type: type = facet_type <@CppRangeForIterate> [concrete] -// CHECK:STDOUT: %.Self.6bd: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.143: = lookup_impl_witness %.Self.6bd, @CppRangeForIterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.109: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element0 [symbolic_self] -// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.712: = lookup_impl_witness %impl.elem0.109, @CppUnsafeDeref [symbolic_self] -// CHECK:STDOUT: %impl.elem0.56a: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.712, element0 [symbolic_self] -// CHECK:STDOUT: %impl.elem1.222: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element1 [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.109 impls @Destroy and %impl.elem0.109 impls @Copy and %impl.elem0.109 impls @CppUnsafeDeref and %impl.elem0.109 impls @EqWith, @EqWith(%impl.elem1.222) and %impl.elem0.109 impls @Inc and %impl.elem0.56a impls @Destroy and %impl.elem0.56a impls @Copy and %impl.elem1.222 impls @Destroy and %impl.elem1.222 impls @Copy> [concrete] +// CHECK:STDOUT: %.Self.aed: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.f6b: = lookup_impl_witness %.Self.aed, @CppRangeForIterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b73: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element0 [symbolic_self] +// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.595: = lookup_impl_witness %impl.elem0.b73, @CppUnsafeDeref [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a2f: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.595, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.228: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element1 [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.b73 impls @Destroy and %impl.elem0.b73 impls @Copy and %impl.elem0.b73 impls @CppUnsafeDeref and %impl.elem0.b73 impls @EqWith, @EqWith(%impl.elem1.228) and %impl.elem0.b73 impls @Inc and %impl.elem0.a2f impls @Destroy and %impl.elem0.a2f impls @Copy and %impl.elem1.228 impls @Destroy and %impl.elem1.228 impls @Copy> [concrete] // CHECK:STDOUT: %R.39b: %CppRangeForIterate_where.type.1c721f.1 = symbolic_binding R, 0 [symbolic] // CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.7e2712.2: = lookup_impl_witness %R.39b, @CppRangeForIterate [symbolic] // CHECK:STDOUT: %impl.elem1.7a0bff.2: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.7e2712.2, element1 [symbolic] @@ -2065,37 +2065,37 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.lookup_impl_witness.ec3: = lookup_impl_witness %impl.elem0.af7, @Destroy [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.a7a: = lookup_impl_witness %impl.elem0.af7, @Copy [symbolic] // CHECK:STDOUT: %facet_value.194: %facet_type = facet_value %impl.elem0.af7, (%Destroy.lookup_impl_witness.ec3, %Copy.lookup_impl_witness.a7a) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.1f7: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.0d6: %R.as_type.as.Iterate.impl.Next.type.1f7 = struct_value () [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.36f: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.29b: %R.as_type.as.Iterate.impl.NewCursor.type.36f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.171: = lookup_impl_witness %R.7b2, @Iterate [symbolic] -// CHECK:STDOUT: %Iterate.facet.523: %Iterate.type = facet_value %R.as_type.657, (%Iterate.lookup_impl_witness.171) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.51e: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.523) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.e1d: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.523) [symbolic] -// CHECK:STDOUT: %.250: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.51e, %Iterate.facet.523 [symbolic] -// CHECK:STDOUT: %impl.elem2.9ef: %.250 = impl_witness_access %Iterate.lookup_impl_witness.171, element2 [symbolic] -// CHECK:STDOUT: %impl.elem1.f12: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.171, element1 [symbolic] -// CHECK:STDOUT: %as_type.6f2: type = facet_access_type %impl.elem1.f12 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.5ff: = specific_impl_function %impl.elem2.9ef, @Iterate.WithSelf.NewCursor(%Iterate.facet.523) [symbolic] -// CHECK:STDOUT: %ptr.b94: type = ptr_type %as_type.6f2 [symbolic] -// CHECK:STDOUT: %.f81: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.e1d, %Iterate.facet.523 [symbolic] -// CHECK:STDOUT: %impl.elem3.04c: %.f81 = impl_witness_access %Iterate.lookup_impl_witness.171, element3 [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.d8f: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c6d: %R.as_type.as.Iterate.impl.Next.type.d8f = struct_value () [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.127: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.627: %R.as_type.as.Iterate.impl.NewCursor.type.127 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.93c: = lookup_impl_witness %R.c6e, @Iterate [symbolic] +// CHECK:STDOUT: %Iterate.facet.94d: %Iterate.type = facet_value %R.as_type.087, (%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: %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] +// CHECK:STDOUT: %ptr.bac: type = ptr_type %as_type.8e4 [symbolic] +// CHECK:STDOUT: %.a06: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.275, %Iterate.facet.94d [symbolic] +// CHECK:STDOUT: %impl.elem3.7bd: %.a06 = impl_witness_access %Iterate.lookup_impl_witness.93c, element3 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.541: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%facet_value.209) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.fd3: = impl_witness imports.%OptionalStorage.impl_witness_table.655, @T.as_type.as.OptionalStorage.impl(%facet_value.209) [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.cc1: %OptionalStorage.type = facet_value %f64.dc1, (%OptionalStorage.impl_witness.fd3) [concrete] -// CHECK:STDOUT: %Optional.f48: type = class_type @Optional, @Optional(%OptionalStorage.facet.cc1) [concrete] -// CHECK:STDOUT: %specific_impl_fn.c5b: = specific_impl_function %impl.elem3.04c, @Iterate.WithSelf.Next(%Iterate.facet.523) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.d4e: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.cc1) [concrete] -// CHECK:STDOUT: %Optional.HasValue.e79: %Optional.HasValue.type.d4e = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Get.type.822: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.cc1) [concrete] -// CHECK:STDOUT: %Optional.Get.f05: %Optional.Get.type.822 = struct_value () [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.be7: = impl_witness imports.%OptionalStorage.impl_witness_table.199, @T.as_type.as.OptionalStorage.impl(%facet_value.209) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.c07: %OptionalStorage.type = facet_value %f64.dc1, (%OptionalStorage.impl_witness.be7) [concrete] +// CHECK:STDOUT: %Optional.c42: type = class_type @Optional, @Optional(%OptionalStorage.facet.c07) [concrete] +// CHECK:STDOUT: %specific_impl_fn.666: = specific_impl_function %impl.elem3.7bd, @Iterate.WithSelf.Next(%Iterate.facet.94d) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.c09: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.c07) [concrete] +// CHECK:STDOUT: %Optional.HasValue.53b: %Optional.HasValue.type.c09 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.4f6: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.c07) [concrete] +// CHECK:STDOUT: %Optional.Get.5f1: %Optional.Get.type.4f6 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.339: %Destroy.type = facet_value %f64.dc1, (%custom_witness.df9cc1.2) [concrete] // CHECK:STDOUT: %MaybeUnformed.b7e: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.339) [concrete] // CHECK:STDOUT: %.cc0: type = maybe_unformed_type %f64.dc1 [concrete] // CHECK:STDOUT: %struct_type.value.has_value.ad9: type = struct_type {.value: %MaybeUnformed.b7e, .has_value: bool} [concrete] -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.e79, @Optional.HasValue(%OptionalStorage.facet.cc1) [concrete] -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.f05, @Optional.Get(%OptionalStorage.facet.cc1) [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.53b, @Optional.HasValue(%OptionalStorage.facet.c07) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.5f1, @Optional.Get(%OptionalStorage.facet.c07) [concrete] // CHECK:STDOUT: %AddAssignWith.type.ff9: type = facet_type <@AddAssignWith, @AddAssignWith(%f64.dc1)> [concrete] // CHECK:STDOUT: %Float.as.AddAssignWith.impl.Op.type.fdd: type = fn_type @Float.as.AddAssignWith.impl.Op, @Float.as.AddAssignWith.impl(%N.fe9) [symbolic] // CHECK:STDOUT: %Float.as.AddAssignWith.impl.Op.430: %Float.as.AddAssignWith.impl.Op.type.fdd = struct_value () [symbolic] @@ -2108,11 +2108,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Float.as.AddAssignWith.impl.Op.specific_fn: = specific_function %Float.as.AddAssignWith.impl.Op.ac1, @Float.as.AddAssignWith.impl.Op(%int_64) [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.9: type = fn_type @Destroy.Op.loc24_19.6 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.9: %Destroy.Op.type.1d8f74.9 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.f8f: = lookup_impl_witness %impl.elem1.f12, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type.b9c: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.f12) [symbolic] -// CHECK:STDOUT: %.75c: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.b9c, %impl.elem1.f12 [symbolic] -// CHECK:STDOUT: %impl.elem0.688: %.75c = impl_witness_access %Destroy.lookup_impl_witness.f8f, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.1e0: = specific_impl_function %impl.elem0.688, @Destroy.WithSelf.Op(%impl.elem1.f12) [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.def: = lookup_impl_witness %impl.elem1.7a9, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type.41f: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.7a9) [symbolic] +// CHECK:STDOUT: %.148: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.41f, %impl.elem1.7a9 [symbolic] +// CHECK:STDOUT: %impl.elem0.461: %.148 = impl_witness_access %Destroy.lookup_impl_witness.def, element0 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.095: = specific_impl_function %impl.elem0.461, @Destroy.WithSelf.Op(%impl.elem1.7a9) [symbolic] // CHECK:STDOUT: %ConstRange: type = class_type @ConstRange [concrete] // CHECK:STDOUT: %pattern_type.025: type = pattern_type %ConstRange [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -2146,22 +2146,22 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.Op.1a2547.10: %Destroy.Op.type.1d8f74.10 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.10: = custom_witness (%Destroy.Op.1a2547.10), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.40b: %Destroy.type = facet_value %tuple.type.005, (%custom_witness.df9cc1.10) [concrete] -// CHECK:STDOUT: %Iterate.impl_witness.1f0: = impl_witness imports.%Iterate.impl_witness_table.344, @R.as_type.as.Iterate.impl(%facet_value.c05) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.315: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.c05) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.d2e: %R.as_type.as.Iterate.impl.NewCursor.type.315 = struct_value () [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.c69: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.c05) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.0b7: %R.as_type.as.Iterate.impl.Next.type.c69 = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet.9f4: %Iterate.type = facet_value %ConstRange, (%Iterate.impl_witness.1f0) [concrete] -// CHECK:STDOUT: %facet_value.9d0: %Iterate_where.type.83b = facet_value %ConstRange, (%Iterate.impl_witness.1f0) [concrete] +// CHECK:STDOUT: %Iterate.impl_witness.e5c: = impl_witness imports.%Iterate.impl_witness_table.ccd, @R.as_type.as.Iterate.impl(%facet_value.c05) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.979: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.c05) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.662: %R.as_type.as.Iterate.impl.NewCursor.type.979 = struct_value () [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.496: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.c05) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c12: %R.as_type.as.Iterate.impl.Next.type.496 = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet.c32: %Iterate.type = facet_value %ConstRange, (%Iterate.impl_witness.e5c) [concrete] +// CHECK:STDOUT: %facet_value.d21: %Iterate_where.type.a32 = facet_value %ConstRange, (%Iterate.impl_witness.e5c) [concrete] // CHECK:STDOUT: %r.param_patt.a73: %pattern_type.025 = value_param_pattern [concrete] // CHECK:STDOUT: %r.patt.0e2: %pattern_type.025 = at_binding_pattern r, %r.param_patt.a73 [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.d89: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.9f4) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.64f: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.9f4) [concrete] -// CHECK:STDOUT: %.e0f: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.d89, %Iterate.facet.9f4 [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %R.as_type.as.Iterate.impl.NewCursor.d2e, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.c05) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.ebd: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.c32) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.377: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.c32) [concrete] +// CHECK:STDOUT: %.243: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.ebd, %Iterate.facet.c32 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %R.as_type.as.Iterate.impl.NewCursor.662, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.c05) [concrete] // CHECK:STDOUT: %ptr.d1a: type = ptr_type %tuple.type.005 [concrete] -// CHECK:STDOUT: %.50c: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.64f, %Iterate.facet.9f4 [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %R.as_type.as.Iterate.impl.Next.0b7, @R.as_type.as.Iterate.impl.Next(%facet_value.c05) [concrete] +// CHECK:STDOUT: %.c31: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.377, %Iterate.facet.c32 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %R.as_type.as.Iterate.impl.Next.c12, @R.as_type.as.Iterate.impl.Next(%facet_value.c05) [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.117: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.40b) [concrete] // CHECK:STDOUT: %.5a4: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.117, %Destroy.facet.40b [concrete] // CHECK:STDOUT: %complete_type.320: = complete_type_witness %tuple.type.005 [concrete] @@ -2171,99 +2171,99 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Core.import_ref.bb6: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.e9e) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6cd)] // CHECK:STDOUT: %Core.import_ref.daba: @Optional.%Optional.Get.type (%Optional.Get.type.bb9) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.fa1)] // CHECK:STDOUT: %Core.import_ref.0c6: type = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%DefaultOptionalStorage (constants.%DefaultOptionalStorage.d50)] -// CHECK:STDOUT: %Core.import_ref.f4f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.300) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.f54)] -// CHECK:STDOUT: %Core.import_ref.18f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.800) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.e83)] -// CHECK:STDOUT: %Core.import_ref.c688: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.4bc) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.dc2)] -// CHECK:STDOUT: %Core.import_ref.a83: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.029) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.cb5)] -// CHECK:STDOUT: %Core.import_ref.aaa3 = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.655 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.f4f, %Core.import_ref.18f, %Core.import_ref.c688, %Core.import_ref.a83, %Core.import_ref.aaa3), @T.as_type.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.6d6: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.f62) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.faf)] +// CHECK:STDOUT: %Core.import_ref.6f3: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.973) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.c3a)] +// CHECK:STDOUT: %Core.import_ref.af2: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.d76) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.aa4)] +// CHECK:STDOUT: %Core.import_ref.e31: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.671) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.a54)] +// CHECK:STDOUT: %Core.import_ref.cea = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.199 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.6d6, %Core.import_ref.6f3, %Core.import_ref.af2, %Core.import_ref.e31, %Core.import_ref.cea), @T.as_type.as.OptionalStorage.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.301: %facet_type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%facet_value (constants.%facet_value.194)] // CHECK:STDOUT: %Core.import_ref.89f: %Destroy.type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%Destroy.facet (constants.%Destroy.facet.593)] -// CHECK:STDOUT: %Core.import_ref.3e6: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.36f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.29b)] -// CHECK:STDOUT: %Core.import_ref.85d: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.1f7) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.0d6)] -// CHECK:STDOUT: %Iterate.impl_witness_table.344 = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.3e6, %Core.import_ref.85d), @R.as_type.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.940: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.127) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.627)] +// CHECK:STDOUT: %Core.import_ref.fe7: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.d8f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.c6d)] +// CHECK:STDOUT: %Iterate.impl_witness_table.ccd = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.940, %Core.import_ref.fe7), @R.as_type.as.Iterate.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)] // CHECK:STDOUT: %AddAssignWith.impl_witness_table = impl_witness_table (%Core.import_ref.cb3), @Float.as.AddAssignWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TestIterate(%R.loc20_17.2: %Iterate_where.type.83b) { +// CHECK:STDOUT: generic fn @TestIterate(%R.loc20_17.2: %Iterate_where.type.a32) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc20_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.171)] -// CHECK:STDOUT: %Iterate.facet.loc24_19.5: %Iterate.type = facet_value %R.as_type.loc20_62.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// 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.51e)] -// 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.%.250)] -// CHECK:STDOUT: %impl.elem2.loc24_19.2: @TestIterate.%.loc24_19.19 (%.250) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc24_19.2 (constants.%impl.elem2.9ef)] -// 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.5ff)] +// 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_62.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: %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.b94)] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc24_19.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.e1d)] -// CHECK:STDOUT: %.loc24_19.20: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc24_19.5 [symbolic = %.loc24_19.20 (constants.%.f81)] -// CHECK:STDOUT: %impl.elem3.loc24_19.2: @TestIterate.%.loc24_19.20 (%.f81) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc24_19.2 (constants.%impl.elem3.04c)] -// CHECK:STDOUT: %specific_impl_fn.loc24_19.5: = specific_impl_function %impl.elem3.loc24_19.2, @Iterate.WithSelf.Next(%Iterate.facet.loc24_19.5) [symbolic = %specific_impl_fn.loc24_19.5 (constants.%specific_impl_fn.c5b)] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.b9c)] -// CHECK:STDOUT: %.loc24_19.21: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc24_19.21 (constants.%.75c)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.f8f)] -// CHECK:STDOUT: %impl.elem0.loc24_19.2: @TestIterate.%.loc24_19.21 (%.75c) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc24_19.2 (constants.%impl.elem0.688)] -// CHECK:STDOUT: %specific_impl_fn.loc24_19.6: = specific_impl_function %impl.elem0.loc24_19.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc24_19.6 (constants.%specific_impl_fn.1e0)] +// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.bac)] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc24_19.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.275)] +// CHECK:STDOUT: %.loc24_19.20: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc24_19.5 [symbolic = %.loc24_19.20 (constants.%.a06)] +// CHECK:STDOUT: %impl.elem3.loc24_19.2: @TestIterate.%.loc24_19.20 (%.a06) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc24_19.2 (constants.%impl.elem3.7bd)] +// CHECK:STDOUT: %specific_impl_fn.loc24_19.5: = specific_impl_function %impl.elem3.loc24_19.2, @Iterate.WithSelf.Next(%Iterate.facet.loc24_19.5) [symbolic = %specific_impl_fn.loc24_19.5 (constants.%specific_impl_fn.666)] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.41f)] +// CHECK:STDOUT: %.loc24_19.21: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc24_19.21 (constants.%.148)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.def)] +// CHECK:STDOUT: %impl.elem0.loc24_19.2: @TestIterate.%.loc24_19.21 (%.148) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc24_19.2 (constants.%impl.elem0.461)] +// CHECK:STDOUT: %specific_impl_fn.loc24_19.6: = specific_impl_function %impl.elem0.loc24_19.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc24_19.6 (constants.%specific_impl_fn.095)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc20_62.1 (%R.as_type.657)) { +// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc20_62.1 (%R.as_type.087)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: name_binding_decl { // 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_62.1 (%R.as_type.657) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc24_19.1: @TestIterate.%.loc24_19.19 (%.250) = impl_witness_access constants.%Iterate.lookup_impl_witness.171, element2 [symbolic = %impl.elem2.loc24_19.2 (constants.%impl.elem2.9ef)] +// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc20_62.1 (%R.as_type.087) = 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: %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.657, (constants.%Iterate.lookup_impl_witness.171) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc24_19.1: %Iterate.type = converted constants.%R.as_type.657, %Iterate.facet.loc24_19.1 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %Iterate.facet.loc24_19.2: %Iterate.type = facet_value constants.%R.as_type.657, (constants.%Iterate.lookup_impl_witness.171) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc24_19.2: %Iterate.type = converted constants.%R.as_type.657, %Iterate.facet.loc24_19.2 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %specific_impl_fn.loc24_19.1: = specific_impl_function %impl.elem2.loc24_19.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.523) [symbolic = %specific_impl_fn.loc24_19.4 (constants.%specific_impl_fn.5ff)] +// CHECK:STDOUT: %Iterate.facet.loc24_19.1: %Iterate.type = facet_value constants.%R.as_type.087, (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.087, %Iterate.facet.loc24_19.1 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %Iterate.facet.loc24_19.2: %Iterate.type = facet_value constants.%R.as_type.087, (constants.%Iterate.lookup_impl_witness.93c) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %.loc24_19.2: %Iterate.type = converted constants.%R.as_type.087, %Iterate.facet.loc24_19.2 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %specific_impl_fn.loc24_19.1: = specific_impl_function %impl.elem2.loc24_19.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.94d) [symbolic = %specific_impl_fn.loc24_19.4 (constants.%specific_impl_fn.1b8)] // CHECK:STDOUT: %bound_method.loc24_19.2: = bound_method %r.ref, %specific_impl_fn.loc24_19.1 -// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.6f2) = var_storage invalid -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.6f2) to %var = call %bound_method.loc24_19.2(%r.ref) +// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.8e4) = var_storage invalid +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.8e4) to %var = call %bound_method.loc24_19.2(%r.ref) // CHECK:STDOUT: assign %var, %Iterate.WithSelf.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr: @TestIterate.%ptr (%ptr.b94) = addr_of %var -// CHECK:STDOUT: %impl.elem3.loc24_19.1: @TestIterate.%.loc24_19.20 (%.f81) = impl_witness_access constants.%Iterate.lookup_impl_witness.171, element3 [symbolic = %impl.elem3.loc24_19.2 (constants.%impl.elem3.04c)] +// CHECK:STDOUT: %addr: @TestIterate.%ptr (%ptr.bac) = addr_of %var +// CHECK:STDOUT: %impl.elem3.loc24_19.1: @TestIterate.%.loc24_19.20 (%.a06) = impl_witness_access constants.%Iterate.lookup_impl_witness.93c, element3 [symbolic = %impl.elem3.loc24_19.2 (constants.%impl.elem3.7bd)] // CHECK:STDOUT: %bound_method.loc24_19.3: = bound_method %r.ref, %impl.elem3.loc24_19.1 -// CHECK:STDOUT: %Iterate.facet.loc24_19.3: %Iterate.type = facet_value constants.%R.as_type.657, (constants.%Iterate.lookup_impl_witness.171) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc24_19.3: %Iterate.type = converted constants.%R.as_type.657, %Iterate.facet.loc24_19.3 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %Iterate.facet.loc24_19.4: %Iterate.type = facet_value constants.%R.as_type.657, (constants.%Iterate.lookup_impl_witness.171) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc24_19.4: %Iterate.type = converted constants.%R.as_type.657, %Iterate.facet.loc24_19.4 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc24_19.5: %Destroy.type = converted constants.%as_type.6f2, constants.%impl.elem1.f12 [symbolic = %impl.elem1 (constants.%impl.elem1.f12)] -// CHECK:STDOUT: %.loc24_19.6: %Destroy.type = converted constants.%as_type.6f2, constants.%impl.elem1.f12 [symbolic = %impl.elem1 (constants.%impl.elem1.f12)] -// CHECK:STDOUT: %specific_impl_fn.loc24_19.2: = specific_impl_function %impl.elem3.loc24_19.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.523) [symbolic = %specific_impl_fn.loc24_19.5 (constants.%specific_impl_fn.c5b)] +// CHECK:STDOUT: %Iterate.facet.loc24_19.3: %Iterate.type = facet_value constants.%R.as_type.087, (constants.%Iterate.lookup_impl_witness.93c) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %.loc24_19.3: %Iterate.type = converted constants.%R.as_type.087, %Iterate.facet.loc24_19.3 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %Iterate.facet.loc24_19.4: %Iterate.type = facet_value constants.%R.as_type.087, (constants.%Iterate.lookup_impl_witness.93c) [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %.loc24_19.4: %Iterate.type = converted constants.%R.as_type.087, %Iterate.facet.loc24_19.4 [symbolic = %Iterate.facet.loc24_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %.loc24_19.5: %Destroy.type = converted constants.%as_type.8e4, constants.%impl.elem1.7a9 [symbolic = %impl.elem1 (constants.%impl.elem1.7a9)] +// CHECK:STDOUT: %.loc24_19.6: %Destroy.type = converted constants.%as_type.8e4, constants.%impl.elem1.7a9 [symbolic = %impl.elem1 (constants.%impl.elem1.7a9)] +// CHECK:STDOUT: %specific_impl_fn.loc24_19.2: = specific_impl_function %impl.elem3.loc24_19.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.94d) [symbolic = %specific_impl_fn.loc24_19.5 (constants.%specific_impl_fn.666)] // CHECK:STDOUT: %bound_method.loc24_19.4: = bound_method %r.ref, %specific_impl_fn.loc24_19.2 -// CHECK:STDOUT: %.loc24_19.7: ref %Optional.f48 = temporary_storage -// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.f48 to %.loc24_19.7 = call %bound_method.loc24_19.4(%r.ref, %addr) -// CHECK:STDOUT: %.loc24_19.8: ref %Optional.f48 = temporary %.loc24_19.7, %Iterate.WithSelf.Next.call -// CHECK:STDOUT: %.loc24_19.9: %Optional.HasValue.type.d4e = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.HasValue.e79] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.d4e = name_ref HasValue, %.loc24_19.9 [concrete = constants.%Optional.HasValue.e79] +// CHECK:STDOUT: %.loc24_19.7: ref %Optional.c42 = temporary_storage +// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.c42 to %.loc24_19.7 = call %bound_method.loc24_19.4(%r.ref, %addr) +// CHECK:STDOUT: %.loc24_19.8: ref %Optional.c42 = temporary %.loc24_19.7, %Iterate.WithSelf.Next.call +// CHECK:STDOUT: %.loc24_19.9: %Optional.HasValue.type.c09 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.HasValue.53b] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.c09 = name_ref HasValue, %.loc24_19.9 [concrete = constants.%Optional.HasValue.53b] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc24_19.8, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc24_19.5: = bound_method %.loc24_19.8, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc24_19.10: %Optional.f48 = acquire_value %.loc24_19.8 +// CHECK:STDOUT: %.loc24_19.10: %Optional.c42 = acquire_value %.loc24_19.8 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc24_19.5(%.loc24_19.10) // CHECK:STDOUT: %.loc24_19.11: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc24_19.12: bool = converted %Optional.HasValue.call, %.loc24_19.11 // CHECK:STDOUT: if %.loc24_19.12 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc24_19.13: %Optional.Get.type.822 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.Get.f05] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.822 = name_ref Get, %.loc24_19.13 [concrete = constants.%Optional.Get.f05] +// CHECK:STDOUT: %.loc24_19.13: %Optional.Get.type.4f6 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.Get.5f1] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.4f6 = name_ref Get, %.loc24_19.13 [concrete = constants.%Optional.Get.5f1] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc24_19.8, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc24_19.6: = bound_method %.loc24_19.8, %Optional.Get.specific_fn -// CHECK:STDOUT: %.loc24_19.14: %Optional.f48 = acquire_value %.loc24_19.8 +// CHECK:STDOUT: %.loc24_19.14: %Optional.c42 = acquire_value %.loc24_19.8 // CHECK:STDOUT: %Optional.Get.call: init %f64.dc1 = call %bound_method.loc24_19.6(%.loc24_19.14) // CHECK:STDOUT: %.loc24_19.15: %f64.dc1 = value_of_initializer %Optional.Get.call // CHECK:STDOUT: %.loc24_19.16: %f64.dc1 = converted %Optional.Get.call, %.loc24_19.15 @@ -2281,11 +2281,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !for.done: // CHECK:STDOUT: %Destroy.Op.bound.loc24: = bound_method %.loc24_19.8, constants.%Destroy.Op.1a2547.9 // CHECK:STDOUT: %Destroy.Op.call.loc24: init %empty_tuple.type = call %Destroy.Op.bound.loc24(%.loc24_19.8) -// CHECK:STDOUT: %impl.elem0.loc24_19.1: @TestIterate.%.loc24_19.21 (%.75c) = impl_witness_access constants.%Destroy.lookup_impl_witness.f8f, element0 [symbolic = %impl.elem0.loc24_19.2 (constants.%impl.elem0.688)] +// CHECK:STDOUT: %impl.elem0.loc24_19.1: @TestIterate.%.loc24_19.21 (%.148) = impl_witness_access constants.%Destroy.lookup_impl_witness.def, element0 [symbolic = %impl.elem0.loc24_19.2 (constants.%impl.elem0.461)] // CHECK:STDOUT: %bound_method.loc24_19.7: = bound_method %var, %impl.elem0.loc24_19.1 -// CHECK:STDOUT: %.loc24_19.17: %Destroy.type = converted constants.%as_type.6f2, constants.%impl.elem1.f12 [symbolic = %impl.elem1 (constants.%impl.elem1.f12)] -// CHECK:STDOUT: %.loc24_19.18: %Destroy.type = converted constants.%as_type.6f2, constants.%impl.elem1.f12 [symbolic = %impl.elem1 (constants.%impl.elem1.f12)] -// CHECK:STDOUT: %specific_impl_fn.loc24_19.3: = specific_impl_function %impl.elem0.loc24_19.1, @Destroy.WithSelf.Op(constants.%impl.elem1.f12) [symbolic = %specific_impl_fn.loc24_19.6 (constants.%specific_impl_fn.1e0)] +// CHECK:STDOUT: %.loc24_19.17: %Destroy.type = converted constants.%as_type.8e4, constants.%impl.elem1.7a9 [symbolic = %impl.elem1 (constants.%impl.elem1.7a9)] +// CHECK:STDOUT: %.loc24_19.18: %Destroy.type = converted constants.%as_type.8e4, constants.%impl.elem1.7a9 [symbolic = %impl.elem1 (constants.%impl.elem1.7a9)] +// CHECK:STDOUT: %specific_impl_fn.loc24_19.3: = specific_impl_function %impl.elem0.loc24_19.1, @Destroy.WithSelf.Op(constants.%impl.elem1.7a9) [symbolic = %specific_impl_fn.loc24_19.6 (constants.%specific_impl_fn.095)] // CHECK:STDOUT: %bound_method.loc24_19.8: = bound_method %var, %specific_impl_fn.loc24_19.3 // CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc24_19.8(%var) // CHECK:STDOUT: @@ -2324,7 +2324,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc24_19.6(%self.param: ref %Optional.f48) { +// CHECK:STDOUT: fn @Destroy.Op.loc24_19.6(%self.param: ref %Optional.c42) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -2338,7 +2338,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: %c.ref: %ConstRange = name_ref c, %c -// CHECK:STDOUT: %impl.elem2: %.e0f = impl_witness_access constants.%Iterate.impl_witness.1f0, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.d2e] +// CHECK:STDOUT: %impl.elem2: %.243 = impl_witness_access constants.%Iterate.impl_witness.e5c, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.662] // CHECK:STDOUT: %bound_method.loc38_19.1: = bound_method %c.ref, %impl.elem2 // CHECK:STDOUT: %facet_value.loc38_19.1: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.873, constants.%custom_witness.5d5, constants.%custom_witness.213, constants.%custom_witness.a31, constants.%custom_witness.994, constants.%custom_witness.821, constants.%custom_witness.393) [concrete = constants.%facet_value.c05] // CHECK:STDOUT: %.loc38_19.1: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc38_19.1 [concrete = constants.%facet_value.c05] @@ -2353,7 +2353,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr: %ptr.d1a = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.50c = impl_witness_access constants.%Iterate.impl_witness.1f0, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.0b7] +// CHECK:STDOUT: %impl.elem3: %.c31 = impl_witness_access constants.%Iterate.impl_witness.e5c, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.c12] // CHECK:STDOUT: %bound_method.loc38_19.3: = bound_method %c.ref, %impl.elem3 // CHECK:STDOUT: %facet_value.loc38_19.3: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.873, constants.%custom_witness.5d5, constants.%custom_witness.213, constants.%custom_witness.a31, constants.%custom_witness.994, constants.%custom_witness.821, constants.%custom_witness.393) [concrete = constants.%facet_value.c05] // CHECK:STDOUT: %.loc38_19.3: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc38_19.3 [concrete = constants.%facet_value.c05] @@ -2361,27 +2361,27 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %.loc38_19.4: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc38_19.4 [concrete = constants.%facet_value.c05] // CHECK:STDOUT: %specific_fn.loc38_19.2: = specific_function %impl.elem3, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.c05) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc38_19.4: = bound_method %c.ref, %specific_fn.loc38_19.2 -// CHECK:STDOUT: %.loc38_19.5: ref %Optional.f48 = temporary_storage -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call: init %Optional.f48 to %.loc38_19.5 = call %bound_method.loc38_19.4(%c.ref, %addr) -// CHECK:STDOUT: %.loc38_19.6: ref %Optional.f48 = temporary %.loc38_19.5, %R.as_type.as.Iterate.impl.Next.call -// CHECK:STDOUT: %.loc38_19.7: %Optional.HasValue.type.d4e = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.HasValue.e79] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.d4e = name_ref HasValue, %.loc38_19.7 [concrete = constants.%Optional.HasValue.e79] +// CHECK:STDOUT: %.loc38_19.5: ref %Optional.c42 = temporary_storage +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call: init %Optional.c42 to %.loc38_19.5 = call %bound_method.loc38_19.4(%c.ref, %addr) +// CHECK:STDOUT: %.loc38_19.6: ref %Optional.c42 = temporary %.loc38_19.5, %R.as_type.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc38_19.7: %Optional.HasValue.type.c09 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.HasValue.53b] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.c09 = name_ref HasValue, %.loc38_19.7 [concrete = constants.%Optional.HasValue.53b] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc38_19.6, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc38_19.5: = bound_method %.loc38_19.6, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc38_19.8: %Optional.f48 = acquire_value %.loc38_19.6 +// CHECK:STDOUT: %.loc38_19.8: %Optional.c42 = acquire_value %.loc38_19.6 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc38_19.5(%.loc38_19.8) // CHECK:STDOUT: %.loc38_19.9: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc38_19.10: bool = converted %Optional.HasValue.call, %.loc38_19.9 // CHECK:STDOUT: if %.loc38_19.10 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc38_19.11: %Optional.Get.type.822 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.Get.f05] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.822 = name_ref Get, %.loc38_19.11 [concrete = constants.%Optional.Get.f05] +// CHECK:STDOUT: %.loc38_19.11: %Optional.Get.type.4f6 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.Get.5f1] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.4f6 = name_ref Get, %.loc38_19.11 [concrete = constants.%Optional.Get.5f1] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc38_19.6, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc38_19.6: = bound_method %.loc38_19.6, %Optional.Get.specific_fn -// CHECK:STDOUT: %.loc38_19.12: %Optional.f48 = acquire_value %.loc38_19.6 +// CHECK:STDOUT: %.loc38_19.12: %Optional.c42 = acquire_value %.loc38_19.6 // CHECK:STDOUT: %Optional.Get.call: init %f64.dc1 = call %bound_method.loc38_19.6(%.loc38_19.12) // CHECK:STDOUT: %.loc38_19.13: %f64.dc1 = value_of_initializer %Optional.Get.call // CHECK:STDOUT: %.loc38_19.14: %f64.dc1 = converted %Optional.Get.call, %.loc38_19.13 @@ -2406,18 +2406,18 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%R.7b2) { -// CHECK:STDOUT: %R.patt.loc20_17.2 => constants.%R.patt.053 -// CHECK:STDOUT: %R.loc20_17.1 => constants.%R.7b2 -// CHECK:STDOUT: %R.as_type.loc20_62.1 => constants.%R.as_type.657 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe -// CHECK:STDOUT: %r.param_patt.loc20_60.2 => constants.%r.param_patt.184 -// CHECK:STDOUT: %r.patt.loc20_60.2 => constants.%r.patt.727 +// CHECK:STDOUT: specific @TestIterate(constants.%R.c6e) { +// CHECK:STDOUT: %R.patt.loc20_17.2 => constants.%R.patt.ae1 +// CHECK:STDOUT: %R.loc20_17.1 => constants.%R.c6e +// CHECK:STDOUT: %R.as_type.loc20_62.1 => constants.%R.as_type.087 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.3d7 +// CHECK:STDOUT: %r.param_patt.loc20_60.2 => constants.%r.param_patt.03a +// CHECK:STDOUT: %r.patt.loc20_60.2 => constants.%r.patt.b86 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.9d0) { -// CHECK:STDOUT: %R.patt.loc20_17.2 => constants.%R.patt.053 -// CHECK:STDOUT: %R.loc20_17.1 => constants.%facet_value.9d0 +// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.d21) { +// CHECK:STDOUT: %R.patt.loc20_17.2 => constants.%R.patt.ae1 +// CHECK:STDOUT: %R.loc20_17.1 => constants.%facet_value.d21 // CHECK:STDOUT: %R.as_type.loc20_62.1 => constants.%ConstRange // CHECK:STDOUT: %pattern_type => constants.%pattern_type.025 // CHECK:STDOUT: %r.param_patt.loc20_60.2 => constants.%r.param_patt.a73 @@ -2425,19 +2425,19 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc20 => constants.%complete_type.357 -// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.1f0 -// CHECK:STDOUT: %Iterate.facet.loc24_19.5 => constants.%Iterate.facet.9f4 -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.d89 -// CHECK:STDOUT: %.loc24_19.19 => constants.%.e0f -// CHECK:STDOUT: %impl.elem2.loc24_19.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.d2e +// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.e5c +// CHECK:STDOUT: %Iterate.facet.loc24_19.5 => constants.%Iterate.facet.c32 +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.ebd +// CHECK:STDOUT: %.loc24_19.19 => constants.%.243 +// CHECK:STDOUT: %impl.elem2.loc24_19.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.662 // CHECK:STDOUT: %specific_impl_fn.loc24_19.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn // CHECK:STDOUT: %impl.elem1 => constants.%Destroy.facet.40b // CHECK:STDOUT: %as_type => constants.%tuple.type.005 // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.320 // CHECK:STDOUT: %ptr => constants.%ptr.d1a -// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.64f -// CHECK:STDOUT: %.loc24_19.20 => constants.%.50c -// CHECK:STDOUT: %impl.elem3.loc24_19.2 => constants.%R.as_type.as.Iterate.impl.Next.0b7 +// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.377 +// CHECK:STDOUT: %.loc24_19.20 => constants.%.c31 +// CHECK:STDOUT: %impl.elem3.loc24_19.2 => constants.%R.as_type.as.Iterate.impl.Next.c12 // CHECK:STDOUT: %specific_impl_fn.loc24_19.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.117 // CHECK:STDOUT: %.loc24_19.21 => constants.%.5a4 @@ -2461,17 +2461,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Optional.HasValue.6cd: %Optional.HasValue.type.e9e = struct_value () [symbolic] // CHECK:STDOUT: %T.283: %facet_type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.d50: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.029: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.cb5: %T.as_type.as.OptionalStorage.impl.Get.type.029 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.4bc: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.dc2: %T.as_type.as.OptionalStorage.impl.Has.type.4bc = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.800: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.e83: %T.as_type.as.OptionalStorage.impl.Some.type.800 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.300: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.f54: %T.as_type.as.OptionalStorage.impl.None.type.300 = struct_value () [symbolic] -// CHECK:STDOUT: %.Self.35d: %Iterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.b37: = lookup_impl_witness %.Self.35d, @Iterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.903: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.b37, element0 [symbolic_self] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.671: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.a54: %T.as_type.as.OptionalStorage.impl.Get.type.671 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.d76: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.aa4: %T.as_type.as.OptionalStorage.impl.Has.type.d76 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.973: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.c3a: %T.as_type.as.OptionalStorage.impl.Some.type.973 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.f62: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.faf: %T.as_type.as.OptionalStorage.impl.None.type.f62 = struct_value () [symbolic] // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete] // CHECK:STDOUT: %N.fe9: Core.IntLiteral = symbolic_binding N, 0 [symbolic] // CHECK:STDOUT: %f64.dc1: type = class_type @Float, @Float(%int_64) [concrete] @@ -2483,23 +2480,26 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Float.as.Copy.impl.Op.d93: %Float.as.Copy.impl.Op.type.ff3 = struct_value () [symbolic] // CHECK:STDOUT: %Copy.impl_witness.873: = impl_witness imports.%Copy.impl_witness_table.4e8, @Float.as.Copy.impl(%int_64) [concrete] // CHECK:STDOUT: %facet_value.209: %facet_type = facet_value %f64.dc1, (%custom_witness.df9cc1.2, %Copy.impl_witness.873) [concrete] -// CHECK:STDOUT: %Iterate_where.type.83b: type = facet_type <@Iterate where %impl.elem0.903 = %facet_value.209> [concrete] -// CHECK:STDOUT: %pattern_type.b62: type = pattern_type %Iterate_where.type.83b [concrete] -// CHECK:STDOUT: %R.patt.053: %pattern_type.b62 = symbolic_binding_pattern R, 0 [symbolic] -// CHECK:STDOUT: %R.7b2: %Iterate_where.type.83b = symbolic_binding R, 0 [symbolic] -// CHECK:STDOUT: %R.as_type.657: type = facet_access_type %R.7b2 [symbolic] -// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %R.as_type.657 [symbolic] -// CHECK:STDOUT: %r.param_patt.184: %pattern_type.afe = value_param_pattern [symbolic] -// CHECK:STDOUT: %r.patt.727: %pattern_type.afe = at_binding_pattern r, %r.param_patt.184 [symbolic] +// CHECK:STDOUT: %.Self.500: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.1d8: = lookup_impl_witness %.Self.500, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.294: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.1d8, element0 [symbolic_self] +// CHECK:STDOUT: %Iterate_where.type.a32: type = facet_type <@Iterate where %impl.elem0.294 = %facet_value.209> [concrete] +// CHECK:STDOUT: %pattern_type.ff5: type = pattern_type %Iterate_where.type.a32 [concrete] +// CHECK:STDOUT: %R.patt.ae1: %pattern_type.ff5 = symbolic_binding_pattern R, 0 [symbolic] +// CHECK:STDOUT: %R.c6e: %Iterate_where.type.a32 = symbolic_binding R, 0 [symbolic] +// CHECK:STDOUT: %R.as_type.087: type = facet_access_type %R.c6e [symbolic] +// CHECK:STDOUT: %pattern_type.3d7: type = pattern_type %R.as_type.087 [symbolic] +// CHECK:STDOUT: %r.param_patt.03a: %pattern_type.3d7 = value_param_pattern [symbolic] +// CHECK:STDOUT: %r.patt.b86: %pattern_type.3d7 = at_binding_pattern r, %r.param_patt.03a [symbolic] // CHECK:STDOUT: %i.patt: %pattern_type.fb7 = value_binding_pattern i [concrete] // CHECK:STDOUT: %CppRangeForIterate.type: type = facet_type <@CppRangeForIterate> [concrete] -// CHECK:STDOUT: %.Self.6bd: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.143: = lookup_impl_witness %.Self.6bd, @CppRangeForIterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.109: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element0 [symbolic_self] -// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.712: = lookup_impl_witness %impl.elem0.109, @CppUnsafeDeref [symbolic_self] -// CHECK:STDOUT: %impl.elem0.56a: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.712, element0 [symbolic_self] -// CHECK:STDOUT: %impl.elem1.222: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element1 [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.109 impls @Destroy and %impl.elem0.109 impls @Copy and %impl.elem0.109 impls @CppUnsafeDeref and %impl.elem0.109 impls @EqWith, @EqWith(%impl.elem1.222) and %impl.elem0.109 impls @Inc and %impl.elem0.56a impls @Destroy and %impl.elem0.56a impls @Copy and %impl.elem1.222 impls @Destroy and %impl.elem1.222 impls @Copy> [concrete] +// CHECK:STDOUT: %.Self.aed: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.f6b: = lookup_impl_witness %.Self.aed, @CppRangeForIterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b73: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element0 [symbolic_self] +// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.595: = lookup_impl_witness %impl.elem0.b73, @CppUnsafeDeref [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a2f: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.595, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.228: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element1 [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.b73 impls @Destroy and %impl.elem0.b73 impls @Copy and %impl.elem0.b73 impls @CppUnsafeDeref and %impl.elem0.b73 impls @EqWith, @EqWith(%impl.elem1.228) and %impl.elem0.b73 impls @Inc and %impl.elem0.a2f impls @Destroy and %impl.elem0.a2f impls @Copy and %impl.elem1.228 impls @Destroy and %impl.elem1.228 impls @Copy> [concrete] // CHECK:STDOUT: %R.39b: %CppRangeForIterate_where.type.1c721f.1 = symbolic_binding R, 0 [symbolic] // CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.7e2712.2: = lookup_impl_witness %R.39b, @CppRangeForIterate [symbolic] // CHECK:STDOUT: %impl.elem1.7a0bff.2: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.7e2712.2, element1 [symbolic] @@ -2512,37 +2512,37 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.lookup_impl_witness.ec3: = lookup_impl_witness %impl.elem0.af7, @Destroy [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.a7a: = lookup_impl_witness %impl.elem0.af7, @Copy [symbolic] // CHECK:STDOUT: %facet_value.194: %facet_type = facet_value %impl.elem0.af7, (%Destroy.lookup_impl_witness.ec3, %Copy.lookup_impl_witness.a7a) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.1f7: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.0d6: %R.as_type.as.Iterate.impl.Next.type.1f7 = struct_value () [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.36f: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.29b: %R.as_type.as.Iterate.impl.NewCursor.type.36f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.171: = lookup_impl_witness %R.7b2, @Iterate [symbolic] -// CHECK:STDOUT: %Iterate.facet.523: %Iterate.type = facet_value %R.as_type.657, (%Iterate.lookup_impl_witness.171) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.51e: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.523) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.e1d: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.523) [symbolic] -// CHECK:STDOUT: %.250: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.51e, %Iterate.facet.523 [symbolic] -// CHECK:STDOUT: %impl.elem2.9ef: %.250 = impl_witness_access %Iterate.lookup_impl_witness.171, element2 [symbolic] -// CHECK:STDOUT: %impl.elem1.f12: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.171, element1 [symbolic] -// CHECK:STDOUT: %as_type.6f2: type = facet_access_type %impl.elem1.f12 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.5ff: = specific_impl_function %impl.elem2.9ef, @Iterate.WithSelf.NewCursor(%Iterate.facet.523) [symbolic] -// CHECK:STDOUT: %ptr.b94: type = ptr_type %as_type.6f2 [symbolic] -// CHECK:STDOUT: %.f81: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.e1d, %Iterate.facet.523 [symbolic] -// CHECK:STDOUT: %impl.elem3.04c: %.f81 = impl_witness_access %Iterate.lookup_impl_witness.171, element3 [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.d8f: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c6d: %R.as_type.as.Iterate.impl.Next.type.d8f = struct_value () [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.127: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.627: %R.as_type.as.Iterate.impl.NewCursor.type.127 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.93c: = lookup_impl_witness %R.c6e, @Iterate [symbolic] +// CHECK:STDOUT: %Iterate.facet.94d: %Iterate.type = facet_value %R.as_type.087, (%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: %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] +// CHECK:STDOUT: %ptr.bac: type = ptr_type %as_type.8e4 [symbolic] +// CHECK:STDOUT: %.a06: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.275, %Iterate.facet.94d [symbolic] +// CHECK:STDOUT: %impl.elem3.7bd: %.a06 = impl_witness_access %Iterate.lookup_impl_witness.93c, element3 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.541: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%facet_value.209) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.fd3: = impl_witness imports.%OptionalStorage.impl_witness_table.655, @T.as_type.as.OptionalStorage.impl(%facet_value.209) [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.cc1: %OptionalStorage.type = facet_value %f64.dc1, (%OptionalStorage.impl_witness.fd3) [concrete] -// CHECK:STDOUT: %Optional.f48: type = class_type @Optional, @Optional(%OptionalStorage.facet.cc1) [concrete] -// CHECK:STDOUT: %specific_impl_fn.c5b: = specific_impl_function %impl.elem3.04c, @Iterate.WithSelf.Next(%Iterate.facet.523) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.d4e: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.cc1) [concrete] -// CHECK:STDOUT: %Optional.HasValue.e79: %Optional.HasValue.type.d4e = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Get.type.822: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.cc1) [concrete] -// CHECK:STDOUT: %Optional.Get.f05: %Optional.Get.type.822 = struct_value () [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.be7: = impl_witness imports.%OptionalStorage.impl_witness_table.199, @T.as_type.as.OptionalStorage.impl(%facet_value.209) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.c07: %OptionalStorage.type = facet_value %f64.dc1, (%OptionalStorage.impl_witness.be7) [concrete] +// CHECK:STDOUT: %Optional.c42: type = class_type @Optional, @Optional(%OptionalStorage.facet.c07) [concrete] +// CHECK:STDOUT: %specific_impl_fn.666: = specific_impl_function %impl.elem3.7bd, @Iterate.WithSelf.Next(%Iterate.facet.94d) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.c09: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.c07) [concrete] +// CHECK:STDOUT: %Optional.HasValue.53b: %Optional.HasValue.type.c09 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.4f6: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.c07) [concrete] +// CHECK:STDOUT: %Optional.Get.5f1: %Optional.Get.type.4f6 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.339: %Destroy.type = facet_value %f64.dc1, (%custom_witness.df9cc1.2) [concrete] // CHECK:STDOUT: %MaybeUnformed.b7e: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.339) [concrete] // CHECK:STDOUT: %.cc0: type = maybe_unformed_type %f64.dc1 [concrete] // CHECK:STDOUT: %struct_type.value.has_value.ad9: type = struct_type {.value: %MaybeUnformed.b7e, .has_value: bool} [concrete] -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.e79, @Optional.HasValue(%OptionalStorage.facet.cc1) [concrete] -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.f05, @Optional.Get(%OptionalStorage.facet.cc1) [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.53b, @Optional.HasValue(%OptionalStorage.facet.c07) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.5f1, @Optional.Get(%OptionalStorage.facet.c07) [concrete] // CHECK:STDOUT: %AddAssignWith.type.ff9: type = facet_type <@AddAssignWith, @AddAssignWith(%f64.dc1)> [concrete] // CHECK:STDOUT: %Float.as.AddAssignWith.impl.Op.type.fdd: type = fn_type @Float.as.AddAssignWith.impl.Op, @Float.as.AddAssignWith.impl(%N.fe9) [symbolic] // CHECK:STDOUT: %Float.as.AddAssignWith.impl.Op.430: %Float.as.AddAssignWith.impl.Op.type.fdd = struct_value () [symbolic] @@ -2555,11 +2555,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Float.as.AddAssignWith.impl.Op.specific_fn: = specific_function %Float.as.AddAssignWith.impl.Op.ac1, @Float.as.AddAssignWith.impl.Op(%int_64) [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.9: type = fn_type @Destroy.Op.loc26_19.6 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.9: %Destroy.Op.type.1d8f74.9 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.f8f: = lookup_impl_witness %impl.elem1.f12, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type.b9c: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.f12) [symbolic] -// CHECK:STDOUT: %.75c: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.b9c, %impl.elem1.f12 [symbolic] -// CHECK:STDOUT: %impl.elem0.688: %.75c = impl_witness_access %Destroy.lookup_impl_witness.f8f, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.1e0: = specific_impl_function %impl.elem0.688, @Destroy.WithSelf.Op(%impl.elem1.f12) [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.def: = lookup_impl_witness %impl.elem1.7a9, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type.41f: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.7a9) [symbolic] +// CHECK:STDOUT: %.148: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.41f, %impl.elem1.7a9 [symbolic] +// CHECK:STDOUT: %impl.elem0.461: %.148 = impl_witness_access %Destroy.lookup_impl_witness.def, element0 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.095: = specific_impl_function %impl.elem0.461, @Destroy.WithSelf.Op(%impl.elem1.7a9) [symbolic] // CHECK:STDOUT: %MutableRange: type = class_type @MutableRange [concrete] // CHECK:STDOUT: %pattern_type.992: type = pattern_type %MutableRange [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -2593,22 +2593,22 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.Op.1a2547.10: %Destroy.Op.type.1d8f74.10 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.10: = custom_witness (%Destroy.Op.1a2547.10), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.e1e: %Destroy.type = facet_value %tuple.type.dd0, (%custom_witness.df9cc1.10) [concrete] -// CHECK:STDOUT: %Iterate.impl_witness.5f7: = impl_witness imports.%Iterate.impl_witness_table.344, @R.as_type.as.Iterate.impl(%facet_value.85f) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.a95: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.85f) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.41a: %R.as_type.as.Iterate.impl.NewCursor.type.a95 = struct_value () [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.5c1: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.85f) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.928: %R.as_type.as.Iterate.impl.Next.type.5c1 = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet.c9f: %Iterate.type = facet_value %MutableRange, (%Iterate.impl_witness.5f7) [concrete] -// CHECK:STDOUT: %facet_value.7dc: %Iterate_where.type.83b = facet_value %MutableRange, (%Iterate.impl_witness.5f7) [concrete] +// CHECK:STDOUT: %Iterate.impl_witness.57f: = impl_witness imports.%Iterate.impl_witness_table.ccd, @R.as_type.as.Iterate.impl(%facet_value.85f) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.cac: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.85f) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.b0d: %R.as_type.as.Iterate.impl.NewCursor.type.cac = struct_value () [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.82c: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.85f) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c07: %R.as_type.as.Iterate.impl.Next.type.82c = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet.d2f: %Iterate.type = facet_value %MutableRange, (%Iterate.impl_witness.57f) [concrete] +// CHECK:STDOUT: %facet_value.37c: %Iterate_where.type.a32 = facet_value %MutableRange, (%Iterate.impl_witness.57f) [concrete] // CHECK:STDOUT: %r.param_patt.aeb: %pattern_type.992 = value_param_pattern [concrete] // CHECK:STDOUT: %r.patt.fe7: %pattern_type.992 = at_binding_pattern r, %r.param_patt.aeb [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.bde: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.c9f) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.454: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.c9f) [concrete] -// CHECK:STDOUT: %.c29a: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.bde, %Iterate.facet.c9f [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %R.as_type.as.Iterate.impl.NewCursor.41a, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.85f) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.1cb: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.d2f) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.ba9: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.d2f) [concrete] +// CHECK:STDOUT: %.dab: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.1cb, %Iterate.facet.d2f [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %R.as_type.as.Iterate.impl.NewCursor.b0d, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.85f) [concrete] // CHECK:STDOUT: %ptr.a4f: type = ptr_type %tuple.type.dd0 [concrete] -// CHECK:STDOUT: %.b4c: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.454, %Iterate.facet.c9f [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %R.as_type.as.Iterate.impl.Next.928, @R.as_type.as.Iterate.impl.Next(%facet_value.85f) [concrete] +// CHECK:STDOUT: %.7d2: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.ba9, %Iterate.facet.d2f [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %R.as_type.as.Iterate.impl.Next.c07, @R.as_type.as.Iterate.impl.Next(%facet_value.85f) [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.452: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.e1e) [concrete] // CHECK:STDOUT: %.899: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.452, %Destroy.facet.e1e [concrete] // CHECK:STDOUT: %complete_type.843: = complete_type_witness %tuple.type.dd0 [concrete] @@ -2618,99 +2618,99 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Core.import_ref.bb6: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.e9e) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6cd)] // CHECK:STDOUT: %Core.import_ref.daba: @Optional.%Optional.Get.type (%Optional.Get.type.bb9) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.fa1)] // CHECK:STDOUT: %Core.import_ref.0c6: type = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%DefaultOptionalStorage (constants.%DefaultOptionalStorage.d50)] -// CHECK:STDOUT: %Core.import_ref.f4f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.300) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.f54)] -// CHECK:STDOUT: %Core.import_ref.18f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.800) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.e83)] -// CHECK:STDOUT: %Core.import_ref.c688: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.4bc) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.dc2)] -// CHECK:STDOUT: %Core.import_ref.a83: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.029) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.cb5)] -// CHECK:STDOUT: %Core.import_ref.aaa3 = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.655 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.f4f, %Core.import_ref.18f, %Core.import_ref.c688, %Core.import_ref.a83, %Core.import_ref.aaa3), @T.as_type.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.6d6: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.f62) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.faf)] +// CHECK:STDOUT: %Core.import_ref.6f3: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.973) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.c3a)] +// CHECK:STDOUT: %Core.import_ref.af2: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.d76) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.aa4)] +// CHECK:STDOUT: %Core.import_ref.e31: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.671) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.a54)] +// CHECK:STDOUT: %Core.import_ref.cea = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.199 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.6d6, %Core.import_ref.6f3, %Core.import_ref.af2, %Core.import_ref.e31, %Core.import_ref.cea), @T.as_type.as.OptionalStorage.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.301: %facet_type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%facet_value (constants.%facet_value.194)] // CHECK:STDOUT: %Core.import_ref.89f: %Destroy.type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%Destroy.facet (constants.%Destroy.facet.593)] -// CHECK:STDOUT: %Core.import_ref.3e6: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.36f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.29b)] -// CHECK:STDOUT: %Core.import_ref.85d: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.1f7) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.0d6)] -// CHECK:STDOUT: %Iterate.impl_witness_table.344 = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.3e6, %Core.import_ref.85d), @R.as_type.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.940: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.127) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.627)] +// CHECK:STDOUT: %Core.import_ref.fe7: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.d8f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.c6d)] +// CHECK:STDOUT: %Iterate.impl_witness_table.ccd = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.940, %Core.import_ref.fe7), @R.as_type.as.Iterate.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)] // CHECK:STDOUT: %AddAssignWith.impl_witness_table = impl_witness_table (%Core.import_ref.cb3), @Float.as.AddAssignWith.impl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TestIterate(%R.loc22_17.2: %Iterate_where.type.83b) { +// CHECK:STDOUT: generic fn @TestIterate(%R.loc22_17.2: %Iterate_where.type.a32) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc22_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.171)] -// CHECK:STDOUT: %Iterate.facet.loc26_19.5: %Iterate.type = facet_value %R.as_type.loc22_62.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// 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.51e)] -// 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.%.250)] -// CHECK:STDOUT: %impl.elem2.loc26_19.2: @TestIterate.%.loc26_19.19 (%.250) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc26_19.2 (constants.%impl.elem2.9ef)] -// 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.5ff)] +// 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_62.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: %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.b94)] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc26_19.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.e1d)] -// CHECK:STDOUT: %.loc26_19.20: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc26_19.5 [symbolic = %.loc26_19.20 (constants.%.f81)] -// CHECK:STDOUT: %impl.elem3.loc26_19.2: @TestIterate.%.loc26_19.20 (%.f81) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc26_19.2 (constants.%impl.elem3.04c)] -// CHECK:STDOUT: %specific_impl_fn.loc26_19.5: = specific_impl_function %impl.elem3.loc26_19.2, @Iterate.WithSelf.Next(%Iterate.facet.loc26_19.5) [symbolic = %specific_impl_fn.loc26_19.5 (constants.%specific_impl_fn.c5b)] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.b9c)] -// CHECK:STDOUT: %.loc26_19.21: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc26_19.21 (constants.%.75c)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.f8f)] -// CHECK:STDOUT: %impl.elem0.loc26_19.2: @TestIterate.%.loc26_19.21 (%.75c) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_19.2 (constants.%impl.elem0.688)] -// CHECK:STDOUT: %specific_impl_fn.loc26_19.6: = specific_impl_function %impl.elem0.loc26_19.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc26_19.6 (constants.%specific_impl_fn.1e0)] +// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.bac)] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc26_19.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.275)] +// CHECK:STDOUT: %.loc26_19.20: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc26_19.5 [symbolic = %.loc26_19.20 (constants.%.a06)] +// CHECK:STDOUT: %impl.elem3.loc26_19.2: @TestIterate.%.loc26_19.20 (%.a06) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc26_19.2 (constants.%impl.elem3.7bd)] +// CHECK:STDOUT: %specific_impl_fn.loc26_19.5: = specific_impl_function %impl.elem3.loc26_19.2, @Iterate.WithSelf.Next(%Iterate.facet.loc26_19.5) [symbolic = %specific_impl_fn.loc26_19.5 (constants.%specific_impl_fn.666)] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.41f)] +// CHECK:STDOUT: %.loc26_19.21: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc26_19.21 (constants.%.148)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.def)] +// CHECK:STDOUT: %impl.elem0.loc26_19.2: @TestIterate.%.loc26_19.21 (%.148) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc26_19.2 (constants.%impl.elem0.461)] +// CHECK:STDOUT: %specific_impl_fn.loc26_19.6: = specific_impl_function %impl.elem0.loc26_19.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc26_19.6 (constants.%specific_impl_fn.095)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc22_62.1 (%R.as_type.657)) { +// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc22_62.1 (%R.as_type.087)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: name_binding_decl { // 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_62.1 (%R.as_type.657) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc26_19.1: @TestIterate.%.loc26_19.19 (%.250) = impl_witness_access constants.%Iterate.lookup_impl_witness.171, element2 [symbolic = %impl.elem2.loc26_19.2 (constants.%impl.elem2.9ef)] +// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc22_62.1 (%R.as_type.087) = 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: %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.657, (constants.%Iterate.lookup_impl_witness.171) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc26_19.1: %Iterate.type = converted constants.%R.as_type.657, %Iterate.facet.loc26_19.1 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %Iterate.facet.loc26_19.2: %Iterate.type = facet_value constants.%R.as_type.657, (constants.%Iterate.lookup_impl_witness.171) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc26_19.2: %Iterate.type = converted constants.%R.as_type.657, %Iterate.facet.loc26_19.2 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %specific_impl_fn.loc26_19.1: = specific_impl_function %impl.elem2.loc26_19.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.523) [symbolic = %specific_impl_fn.loc26_19.4 (constants.%specific_impl_fn.5ff)] +// CHECK:STDOUT: %Iterate.facet.loc26_19.1: %Iterate.type = facet_value constants.%R.as_type.087, (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.087, %Iterate.facet.loc26_19.1 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %Iterate.facet.loc26_19.2: %Iterate.type = facet_value constants.%R.as_type.087, (constants.%Iterate.lookup_impl_witness.93c) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %.loc26_19.2: %Iterate.type = converted constants.%R.as_type.087, %Iterate.facet.loc26_19.2 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %specific_impl_fn.loc26_19.1: = specific_impl_function %impl.elem2.loc26_19.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.94d) [symbolic = %specific_impl_fn.loc26_19.4 (constants.%specific_impl_fn.1b8)] // CHECK:STDOUT: %bound_method.loc26_19.2: = bound_method %r.ref, %specific_impl_fn.loc26_19.1 -// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.6f2) = var_storage invalid -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.6f2) to %var = call %bound_method.loc26_19.2(%r.ref) +// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.8e4) = var_storage invalid +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.8e4) to %var = call %bound_method.loc26_19.2(%r.ref) // CHECK:STDOUT: assign %var, %Iterate.WithSelf.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr: @TestIterate.%ptr (%ptr.b94) = addr_of %var -// CHECK:STDOUT: %impl.elem3.loc26_19.1: @TestIterate.%.loc26_19.20 (%.f81) = impl_witness_access constants.%Iterate.lookup_impl_witness.171, element3 [symbolic = %impl.elem3.loc26_19.2 (constants.%impl.elem3.04c)] +// CHECK:STDOUT: %addr: @TestIterate.%ptr (%ptr.bac) = addr_of %var +// CHECK:STDOUT: %impl.elem3.loc26_19.1: @TestIterate.%.loc26_19.20 (%.a06) = impl_witness_access constants.%Iterate.lookup_impl_witness.93c, element3 [symbolic = %impl.elem3.loc26_19.2 (constants.%impl.elem3.7bd)] // CHECK:STDOUT: %bound_method.loc26_19.3: = bound_method %r.ref, %impl.elem3.loc26_19.1 -// CHECK:STDOUT: %Iterate.facet.loc26_19.3: %Iterate.type = facet_value constants.%R.as_type.657, (constants.%Iterate.lookup_impl_witness.171) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc26_19.3: %Iterate.type = converted constants.%R.as_type.657, %Iterate.facet.loc26_19.3 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %Iterate.facet.loc26_19.4: %Iterate.type = facet_value constants.%R.as_type.657, (constants.%Iterate.lookup_impl_witness.171) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc26_19.4: %Iterate.type = converted constants.%R.as_type.657, %Iterate.facet.loc26_19.4 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.523)] -// CHECK:STDOUT: %.loc26_19.5: %Destroy.type = converted constants.%as_type.6f2, constants.%impl.elem1.f12 [symbolic = %impl.elem1 (constants.%impl.elem1.f12)] -// CHECK:STDOUT: %.loc26_19.6: %Destroy.type = converted constants.%as_type.6f2, constants.%impl.elem1.f12 [symbolic = %impl.elem1 (constants.%impl.elem1.f12)] -// CHECK:STDOUT: %specific_impl_fn.loc26_19.2: = specific_impl_function %impl.elem3.loc26_19.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.523) [symbolic = %specific_impl_fn.loc26_19.5 (constants.%specific_impl_fn.c5b)] +// CHECK:STDOUT: %Iterate.facet.loc26_19.3: %Iterate.type = facet_value constants.%R.as_type.087, (constants.%Iterate.lookup_impl_witness.93c) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %.loc26_19.3: %Iterate.type = converted constants.%R.as_type.087, %Iterate.facet.loc26_19.3 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %Iterate.facet.loc26_19.4: %Iterate.type = facet_value constants.%R.as_type.087, (constants.%Iterate.lookup_impl_witness.93c) [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %.loc26_19.4: %Iterate.type = converted constants.%R.as_type.087, %Iterate.facet.loc26_19.4 [symbolic = %Iterate.facet.loc26_19.5 (constants.%Iterate.facet.94d)] +// CHECK:STDOUT: %.loc26_19.5: %Destroy.type = converted constants.%as_type.8e4, constants.%impl.elem1.7a9 [symbolic = %impl.elem1 (constants.%impl.elem1.7a9)] +// CHECK:STDOUT: %.loc26_19.6: %Destroy.type = converted constants.%as_type.8e4, constants.%impl.elem1.7a9 [symbolic = %impl.elem1 (constants.%impl.elem1.7a9)] +// CHECK:STDOUT: %specific_impl_fn.loc26_19.2: = specific_impl_function %impl.elem3.loc26_19.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.94d) [symbolic = %specific_impl_fn.loc26_19.5 (constants.%specific_impl_fn.666)] // CHECK:STDOUT: %bound_method.loc26_19.4: = bound_method %r.ref, %specific_impl_fn.loc26_19.2 -// CHECK:STDOUT: %.loc26_19.7: ref %Optional.f48 = temporary_storage -// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.f48 to %.loc26_19.7 = call %bound_method.loc26_19.4(%r.ref, %addr) -// CHECK:STDOUT: %.loc26_19.8: ref %Optional.f48 = temporary %.loc26_19.7, %Iterate.WithSelf.Next.call -// CHECK:STDOUT: %.loc26_19.9: %Optional.HasValue.type.d4e = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.HasValue.e79] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.d4e = name_ref HasValue, %.loc26_19.9 [concrete = constants.%Optional.HasValue.e79] +// CHECK:STDOUT: %.loc26_19.7: ref %Optional.c42 = temporary_storage +// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.c42 to %.loc26_19.7 = call %bound_method.loc26_19.4(%r.ref, %addr) +// CHECK:STDOUT: %.loc26_19.8: ref %Optional.c42 = temporary %.loc26_19.7, %Iterate.WithSelf.Next.call +// CHECK:STDOUT: %.loc26_19.9: %Optional.HasValue.type.c09 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.HasValue.53b] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.c09 = name_ref HasValue, %.loc26_19.9 [concrete = constants.%Optional.HasValue.53b] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc26_19.8, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc26_19.5: = bound_method %.loc26_19.8, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc26_19.10: %Optional.f48 = acquire_value %.loc26_19.8 +// CHECK:STDOUT: %.loc26_19.10: %Optional.c42 = acquire_value %.loc26_19.8 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc26_19.5(%.loc26_19.10) // CHECK:STDOUT: %.loc26_19.11: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc26_19.12: bool = converted %Optional.HasValue.call, %.loc26_19.11 // CHECK:STDOUT: if %.loc26_19.12 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc26_19.13: %Optional.Get.type.822 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.Get.f05] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.822 = name_ref Get, %.loc26_19.13 [concrete = constants.%Optional.Get.f05] +// CHECK:STDOUT: %.loc26_19.13: %Optional.Get.type.4f6 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.Get.5f1] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.4f6 = name_ref Get, %.loc26_19.13 [concrete = constants.%Optional.Get.5f1] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc26_19.8, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc26_19.6: = bound_method %.loc26_19.8, %Optional.Get.specific_fn -// CHECK:STDOUT: %.loc26_19.14: %Optional.f48 = acquire_value %.loc26_19.8 +// CHECK:STDOUT: %.loc26_19.14: %Optional.c42 = acquire_value %.loc26_19.8 // CHECK:STDOUT: %Optional.Get.call: init %f64.dc1 = call %bound_method.loc26_19.6(%.loc26_19.14) // CHECK:STDOUT: %.loc26_19.15: %f64.dc1 = value_of_initializer %Optional.Get.call // CHECK:STDOUT: %.loc26_19.16: %f64.dc1 = converted %Optional.Get.call, %.loc26_19.15 @@ -2728,11 +2728,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !for.done: // CHECK:STDOUT: %Destroy.Op.bound.loc26: = bound_method %.loc26_19.8, constants.%Destroy.Op.1a2547.9 // CHECK:STDOUT: %Destroy.Op.call.loc26: init %empty_tuple.type = call %Destroy.Op.bound.loc26(%.loc26_19.8) -// CHECK:STDOUT: %impl.elem0.loc26_19.1: @TestIterate.%.loc26_19.21 (%.75c) = impl_witness_access constants.%Destroy.lookup_impl_witness.f8f, element0 [symbolic = %impl.elem0.loc26_19.2 (constants.%impl.elem0.688)] +// CHECK:STDOUT: %impl.elem0.loc26_19.1: @TestIterate.%.loc26_19.21 (%.148) = impl_witness_access constants.%Destroy.lookup_impl_witness.def, element0 [symbolic = %impl.elem0.loc26_19.2 (constants.%impl.elem0.461)] // CHECK:STDOUT: %bound_method.loc26_19.7: = bound_method %var, %impl.elem0.loc26_19.1 -// CHECK:STDOUT: %.loc26_19.17: %Destroy.type = converted constants.%as_type.6f2, constants.%impl.elem1.f12 [symbolic = %impl.elem1 (constants.%impl.elem1.f12)] -// CHECK:STDOUT: %.loc26_19.18: %Destroy.type = converted constants.%as_type.6f2, constants.%impl.elem1.f12 [symbolic = %impl.elem1 (constants.%impl.elem1.f12)] -// CHECK:STDOUT: %specific_impl_fn.loc26_19.3: = specific_impl_function %impl.elem0.loc26_19.1, @Destroy.WithSelf.Op(constants.%impl.elem1.f12) [symbolic = %specific_impl_fn.loc26_19.6 (constants.%specific_impl_fn.1e0)] +// CHECK:STDOUT: %.loc26_19.17: %Destroy.type = converted constants.%as_type.8e4, constants.%impl.elem1.7a9 [symbolic = %impl.elem1 (constants.%impl.elem1.7a9)] +// CHECK:STDOUT: %.loc26_19.18: %Destroy.type = converted constants.%as_type.8e4, constants.%impl.elem1.7a9 [symbolic = %impl.elem1 (constants.%impl.elem1.7a9)] +// CHECK:STDOUT: %specific_impl_fn.loc26_19.3: = specific_impl_function %impl.elem0.loc26_19.1, @Destroy.WithSelf.Op(constants.%impl.elem1.7a9) [symbolic = %specific_impl_fn.loc26_19.6 (constants.%specific_impl_fn.095)] // CHECK:STDOUT: %bound_method.loc26_19.8: = bound_method %var, %specific_impl_fn.loc26_19.3 // CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc26_19.8(%var) // CHECK:STDOUT: @@ -2771,7 +2771,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc26_19.6(%self.param: ref %Optional.f48) { +// CHECK:STDOUT: fn @Destroy.Op.loc26_19.6(%self.param: ref %Optional.c42) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -2785,7 +2785,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: %m.ref: ref %MutableRange = name_ref m, %m -// CHECK:STDOUT: %impl.elem2: %.c29a = impl_witness_access constants.%Iterate.impl_witness.5f7, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.41a] +// CHECK:STDOUT: %impl.elem2: %.dab = impl_witness_access constants.%Iterate.impl_witness.57f, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.b0d] // CHECK:STDOUT: %bound_method.loc68_19.1: = bound_method %m.ref, %impl.elem2 // CHECK:STDOUT: %facet_value.loc68_19.1: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.873, constants.%custom_witness.902, constants.%custom_witness.c08, constants.%custom_witness.29f, constants.%custom_witness.05b, constants.%custom_witness.ed8, constants.%custom_witness.491) [concrete = constants.%facet_value.85f] // CHECK:STDOUT: %.loc68_19.1: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc68_19.1 [concrete = constants.%facet_value.85f] @@ -2801,7 +2801,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr: %ptr.a4f = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.b4c = impl_witness_access constants.%Iterate.impl_witness.5f7, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.928] +// CHECK:STDOUT: %impl.elem3: %.7d2 = impl_witness_access constants.%Iterate.impl_witness.57f, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.c07] // CHECK:STDOUT: %bound_method.loc68_19.3: = bound_method %m.ref, %impl.elem3 // CHECK:STDOUT: %facet_value.loc68_19.3: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableRange, (constants.%custom_witness.df9cc1.2, constants.%Copy.impl_witness.873, constants.%custom_witness.902, constants.%custom_witness.c08, constants.%custom_witness.29f, constants.%custom_witness.05b, constants.%custom_witness.ed8, constants.%custom_witness.491) [concrete = constants.%facet_value.85f] // CHECK:STDOUT: %.loc68_19.3: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc68_19.3 [concrete = constants.%facet_value.85f] @@ -2809,28 +2809,28 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %.loc68_19.4: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableRange, %facet_value.loc68_19.4 [concrete = constants.%facet_value.85f] // CHECK:STDOUT: %specific_fn.loc68_19.2: = specific_function %impl.elem3, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.85f) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc68_19.4: = bound_method %m.ref, %specific_fn.loc68_19.2 -// CHECK:STDOUT: %.loc68_19.5: ref %Optional.f48 = temporary_storage +// CHECK:STDOUT: %.loc68_19.5: ref %Optional.c42 = temporary_storage // CHECK:STDOUT: %.loc68_18.2: %MutableRange = acquire_value %m.ref -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call: init %Optional.f48 to %.loc68_19.5 = call %bound_method.loc68_19.4(%.loc68_18.2, %addr) -// CHECK:STDOUT: %.loc68_19.6: ref %Optional.f48 = temporary %.loc68_19.5, %R.as_type.as.Iterate.impl.Next.call -// CHECK:STDOUT: %.loc68_19.7: %Optional.HasValue.type.d4e = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.HasValue.e79] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.d4e = name_ref HasValue, %.loc68_19.7 [concrete = constants.%Optional.HasValue.e79] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call: init %Optional.c42 to %.loc68_19.5 = call %bound_method.loc68_19.4(%.loc68_18.2, %addr) +// CHECK:STDOUT: %.loc68_19.6: ref %Optional.c42 = temporary %.loc68_19.5, %R.as_type.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc68_19.7: %Optional.HasValue.type.c09 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.HasValue.53b] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.c09 = name_ref HasValue, %.loc68_19.7 [concrete = constants.%Optional.HasValue.53b] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc68_19.6, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc68_19.5: = bound_method %.loc68_19.6, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc68_19.8: %Optional.f48 = acquire_value %.loc68_19.6 +// CHECK:STDOUT: %.loc68_19.8: %Optional.c42 = acquire_value %.loc68_19.6 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc68_19.5(%.loc68_19.8) // CHECK:STDOUT: %.loc68_19.9: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc68_19.10: bool = converted %Optional.HasValue.call, %.loc68_19.9 // CHECK:STDOUT: if %.loc68_19.10 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc68_19.11: %Optional.Get.type.822 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.Get.f05] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.822 = name_ref Get, %.loc68_19.11 [concrete = constants.%Optional.Get.f05] +// CHECK:STDOUT: %.loc68_19.11: %Optional.Get.type.4f6 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.Get.5f1] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.4f6 = name_ref Get, %.loc68_19.11 [concrete = constants.%Optional.Get.5f1] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc68_19.6, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.cc1) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.c07) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc68_19.6: = bound_method %.loc68_19.6, %Optional.Get.specific_fn -// CHECK:STDOUT: %.loc68_19.12: %Optional.f48 = acquire_value %.loc68_19.6 +// CHECK:STDOUT: %.loc68_19.12: %Optional.c42 = acquire_value %.loc68_19.6 // CHECK:STDOUT: %Optional.Get.call: init %f64.dc1 = call %bound_method.loc68_19.6(%.loc68_19.12) // CHECK:STDOUT: %.loc68_19.13: %f64.dc1 = value_of_initializer %Optional.Get.call // CHECK:STDOUT: %.loc68_19.14: %f64.dc1 = converted %Optional.Get.call, %.loc68_19.13 @@ -2855,18 +2855,18 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%R.7b2) { -// CHECK:STDOUT: %R.patt.loc22_17.2 => constants.%R.patt.053 -// CHECK:STDOUT: %R.loc22_17.1 => constants.%R.7b2 -// CHECK:STDOUT: %R.as_type.loc22_62.1 => constants.%R.as_type.657 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe -// CHECK:STDOUT: %r.param_patt.loc22_60.2 => constants.%r.param_patt.184 -// CHECK:STDOUT: %r.patt.loc22_60.2 => constants.%r.patt.727 +// CHECK:STDOUT: specific @TestIterate(constants.%R.c6e) { +// CHECK:STDOUT: %R.patt.loc22_17.2 => constants.%R.patt.ae1 +// CHECK:STDOUT: %R.loc22_17.1 => constants.%R.c6e +// CHECK:STDOUT: %R.as_type.loc22_62.1 => constants.%R.as_type.087 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.3d7 +// CHECK:STDOUT: %r.param_patt.loc22_60.2 => constants.%r.param_patt.03a +// CHECK:STDOUT: %r.patt.loc22_60.2 => constants.%r.patt.b86 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.7dc) { -// CHECK:STDOUT: %R.patt.loc22_17.2 => constants.%R.patt.053 -// CHECK:STDOUT: %R.loc22_17.1 => constants.%facet_value.7dc +// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.37c) { +// CHECK:STDOUT: %R.patt.loc22_17.2 => constants.%R.patt.ae1 +// CHECK:STDOUT: %R.loc22_17.1 => constants.%facet_value.37c // CHECK:STDOUT: %R.as_type.loc22_62.1 => constants.%MutableRange // CHECK:STDOUT: %pattern_type => constants.%pattern_type.992 // CHECK:STDOUT: %r.param_patt.loc22_60.2 => constants.%r.param_patt.aeb @@ -2874,19 +2874,19 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc22 => constants.%complete_type.357 -// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.5f7 -// CHECK:STDOUT: %Iterate.facet.loc26_19.5 => constants.%Iterate.facet.c9f -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.bde -// CHECK:STDOUT: %.loc26_19.19 => constants.%.c29a -// CHECK:STDOUT: %impl.elem2.loc26_19.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.41a +// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.57f +// CHECK:STDOUT: %Iterate.facet.loc26_19.5 => constants.%Iterate.facet.d2f +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.1cb +// CHECK:STDOUT: %.loc26_19.19 => constants.%.dab +// CHECK:STDOUT: %impl.elem2.loc26_19.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.b0d // CHECK:STDOUT: %specific_impl_fn.loc26_19.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn // CHECK:STDOUT: %impl.elem1 => constants.%Destroy.facet.e1e // CHECK:STDOUT: %as_type => constants.%tuple.type.dd0 // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.843 // CHECK:STDOUT: %ptr => constants.%ptr.a4f -// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.454 -// CHECK:STDOUT: %.loc26_19.20 => constants.%.b4c -// CHECK:STDOUT: %impl.elem3.loc26_19.2 => constants.%R.as_type.as.Iterate.impl.Next.928 +// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.ba9 +// CHECK:STDOUT: %.loc26_19.20 => constants.%.7d2 +// CHECK:STDOUT: %impl.elem3.loc26_19.2 => constants.%R.as_type.as.Iterate.impl.Next.c07 // CHECK:STDOUT: %specific_impl_fn.loc26_19.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.452 // CHECK:STDOUT: %.loc26_19.21 => constants.%.899 @@ -2910,17 +2910,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Optional.HasValue.6cd: %Optional.HasValue.type.e9e = struct_value () [symbolic] // CHECK:STDOUT: %T.283: %facet_type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.d50: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.029: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.cb5: %T.as_type.as.OptionalStorage.impl.Get.type.029 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.4bc: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.dc2: %T.as_type.as.OptionalStorage.impl.Has.type.4bc = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.800: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.e83: %T.as_type.as.OptionalStorage.impl.Some.type.800 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.300: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.f54: %T.as_type.as.OptionalStorage.impl.None.type.300 = struct_value () [symbolic] -// CHECK:STDOUT: %.Self.35d: %Iterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.b37: = lookup_impl_witness %.Self.35d, @Iterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.903: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.b37, element0 [symbolic_self] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.671: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.a54: %T.as_type.as.OptionalStorage.impl.Get.type.671 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.d76: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.aa4: %T.as_type.as.OptionalStorage.impl.Has.type.d76 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.973: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.c3a: %T.as_type.as.OptionalStorage.impl.Some.type.973 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.f62: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.faf: %T.as_type.as.OptionalStorage.impl.None.type.f62 = struct_value () [symbolic] // CHECK:STDOUT: %ValueType: type = class_type @ValueType [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -2937,23 +2934,26 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ValueType.Op.4c94b9.2: %ValueType.Op.type.79266b.2 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.c19: = custom_witness (%ValueType.Op.4c94b9.2), @Copy [concrete] // CHECK:STDOUT: %facet_value.ccb: %facet_type = facet_value %ValueType, (%custom_witness.fef, %custom_witness.c19) [concrete] -// CHECK:STDOUT: %Iterate_where.type.99d: type = facet_type <@Iterate where %impl.elem0.903 = %facet_value.ccb> [concrete] -// CHECK:STDOUT: %pattern_type.3f6: type = pattern_type %Iterate_where.type.99d [concrete] -// CHECK:STDOUT: %R.patt.324: %pattern_type.3f6 = symbolic_binding_pattern R, 0 [symbolic] -// CHECK:STDOUT: %R.623: %Iterate_where.type.99d = symbolic_binding R, 0 [symbolic] -// CHECK:STDOUT: %R.as_type.a62: type = facet_access_type %R.623 [symbolic] -// CHECK:STDOUT: %pattern_type.725: type = pattern_type %R.as_type.a62 [symbolic] -// CHECK:STDOUT: %r.param_patt.162: %pattern_type.725 = value_param_pattern [symbolic] -// CHECK:STDOUT: %r.patt.15b: %pattern_type.725 = at_binding_pattern r, %r.param_patt.162 [symbolic] +// CHECK:STDOUT: %.Self.500: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.1d8: = lookup_impl_witness %.Self.500, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.294: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.1d8, element0 [symbolic_self] +// CHECK:STDOUT: %Iterate_where.type.f9d: type = facet_type <@Iterate where %impl.elem0.294 = %facet_value.ccb> [concrete] +// CHECK:STDOUT: %pattern_type.c7b: type = pattern_type %Iterate_where.type.f9d [concrete] +// CHECK:STDOUT: %R.patt.81e: %pattern_type.c7b = symbolic_binding_pattern R, 0 [symbolic] +// CHECK:STDOUT: %R.db4: %Iterate_where.type.f9d = symbolic_binding R, 0 [symbolic] +// CHECK:STDOUT: %R.as_type.c37: type = facet_access_type %R.db4 [symbolic] +// CHECK:STDOUT: %pattern_type.17d: type = pattern_type %R.as_type.c37 [symbolic] +// CHECK:STDOUT: %r.param_patt.90c: %pattern_type.17d = value_param_pattern [symbolic] +// CHECK:STDOUT: %r.patt.d6c: %pattern_type.17d = at_binding_pattern r, %r.param_patt.90c [symbolic] // CHECK:STDOUT: %i.patt: %pattern_type.e41 = value_binding_pattern i [concrete] // CHECK:STDOUT: %CppRangeForIterate.type: type = facet_type <@CppRangeForIterate> [concrete] -// CHECK:STDOUT: %.Self.6bd: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.143: = lookup_impl_witness %.Self.6bd, @CppRangeForIterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.109: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element0 [symbolic_self] -// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.712: = lookup_impl_witness %impl.elem0.109, @CppUnsafeDeref [symbolic_self] -// CHECK:STDOUT: %impl.elem0.56a: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.712, element0 [symbolic_self] -// CHECK:STDOUT: %impl.elem1.222: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element1 [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.109 impls @Destroy and %impl.elem0.109 impls @Copy and %impl.elem0.109 impls @CppUnsafeDeref and %impl.elem0.109 impls @EqWith, @EqWith(%impl.elem1.222) and %impl.elem0.109 impls @Inc and %impl.elem0.56a impls @Destroy and %impl.elem0.56a impls @Copy and %impl.elem1.222 impls @Destroy and %impl.elem1.222 impls @Copy> [concrete] +// CHECK:STDOUT: %.Self.aed: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.f6b: = lookup_impl_witness %.Self.aed, @CppRangeForIterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b73: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element0 [symbolic_self] +// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.595: = lookup_impl_witness %impl.elem0.b73, @CppUnsafeDeref [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a2f: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.595, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.228: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element1 [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.b73 impls @Destroy and %impl.elem0.b73 impls @Copy and %impl.elem0.b73 impls @CppUnsafeDeref and %impl.elem0.b73 impls @EqWith, @EqWith(%impl.elem1.228) and %impl.elem0.b73 impls @Inc and %impl.elem0.a2f impls @Destroy and %impl.elem0.a2f impls @Copy and %impl.elem1.228 impls @Destroy and %impl.elem1.228 impls @Copy> [concrete] // CHECK:STDOUT: %R.39b: %CppRangeForIterate_where.type.1c721f.1 = symbolic_binding R, 0 [symbolic] // CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.7e2712.2: = lookup_impl_witness %R.39b, @CppRangeForIterate [symbolic] // CHECK:STDOUT: %impl.elem1.7a0bff.2: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.7e2712.2, element1 [symbolic] @@ -2966,46 +2966,46 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.lookup_impl_witness.ec3: = lookup_impl_witness %impl.elem0.af7, @Destroy [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.a7a: = lookup_impl_witness %impl.elem0.af7, @Copy [symbolic] // CHECK:STDOUT: %facet_value.194: %facet_type = facet_value %impl.elem0.af7, (%Destroy.lookup_impl_witness.ec3, %Copy.lookup_impl_witness.a7a) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.1f7: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.0d6: %R.as_type.as.Iterate.impl.Next.type.1f7 = struct_value () [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.36f: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.29b: %R.as_type.as.Iterate.impl.NewCursor.type.36f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.8b4: = lookup_impl_witness %R.623, @Iterate [symbolic] -// CHECK:STDOUT: %Iterate.facet.b19: %Iterate.type = facet_value %R.as_type.a62, (%Iterate.lookup_impl_witness.8b4) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.217: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.b19) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.10a: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.b19) [symbolic] -// CHECK:STDOUT: %.a27: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.217, %Iterate.facet.b19 [symbolic] -// CHECK:STDOUT: %impl.elem2.7c0: %.a27 = impl_witness_access %Iterate.lookup_impl_witness.8b4, element2 [symbolic] -// CHECK:STDOUT: %impl.elem1.46a: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.8b4, element1 [symbolic] -// CHECK:STDOUT: %as_type.862: type = facet_access_type %impl.elem1.46a [symbolic] -// CHECK:STDOUT: %specific_impl_fn.e23: = specific_impl_function %impl.elem2.7c0, @Iterate.WithSelf.NewCursor(%Iterate.facet.b19) [symbolic] -// CHECK:STDOUT: %ptr.530: type = ptr_type %as_type.862 [symbolic] -// CHECK:STDOUT: %.df57: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.10a, %Iterate.facet.b19 [symbolic] -// CHECK:STDOUT: %impl.elem3.199: %.df57 = impl_witness_access %Iterate.lookup_impl_witness.8b4, element3 [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.d8f: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c6d: %R.as_type.as.Iterate.impl.Next.type.d8f = struct_value () [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.127: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.627: %R.as_type.as.Iterate.impl.NewCursor.type.127 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.173: = lookup_impl_witness %R.db4, @Iterate [symbolic] +// CHECK:STDOUT: %Iterate.facet.b38: %Iterate.type = facet_value %R.as_type.c37, (%Iterate.lookup_impl_witness.173) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.5cd: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.b38) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.d51: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.b38) [symbolic] +// CHECK:STDOUT: %.592: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.5cd, %Iterate.facet.b38 [symbolic] +// CHECK:STDOUT: %impl.elem2.ae2: %.592 = impl_witness_access %Iterate.lookup_impl_witness.173, element2 [symbolic] +// CHECK:STDOUT: %impl.elem1.834: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.173, element1 [symbolic] +// CHECK:STDOUT: %as_type.e41: type = facet_access_type %impl.elem1.834 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.06e: = specific_impl_function %impl.elem2.ae2, @Iterate.WithSelf.NewCursor(%Iterate.facet.b38) [symbolic] +// CHECK:STDOUT: %ptr.d27: type = ptr_type %as_type.e41 [symbolic] +// CHECK:STDOUT: %.524: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.d51, %Iterate.facet.b38 [symbolic] +// CHECK:STDOUT: %impl.elem3.7a5: %.524 = impl_witness_access %Iterate.lookup_impl_witness.173, element3 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.257: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%facet_value.ccb) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.be5: = impl_witness imports.%OptionalStorage.impl_witness_table.655, @T.as_type.as.OptionalStorage.impl(%facet_value.ccb) [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.7ce: %OptionalStorage.type = facet_value %ValueType, (%OptionalStorage.impl_witness.be5) [concrete] -// CHECK:STDOUT: %Optional.552: type = class_type @Optional, @Optional(%OptionalStorage.facet.7ce) [concrete] -// CHECK:STDOUT: %specific_impl_fn.169: = specific_impl_function %impl.elem3.199, @Iterate.WithSelf.Next(%Iterate.facet.b19) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.109: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.7ce) [concrete] -// CHECK:STDOUT: %Optional.HasValue.605: %Optional.HasValue.type.109 = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Get.type.135: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.7ce) [concrete] -// CHECK:STDOUT: %Optional.Get.5aa: %Optional.Get.type.135 = struct_value () [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.9db: = impl_witness imports.%OptionalStorage.impl_witness_table.199, @T.as_type.as.OptionalStorage.impl(%facet_value.ccb) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.cac: %OptionalStorage.type = facet_value %ValueType, (%OptionalStorage.impl_witness.9db) [concrete] +// CHECK:STDOUT: %Optional.c14: type = class_type @Optional, @Optional(%OptionalStorage.facet.cac) [concrete] +// CHECK:STDOUT: %specific_impl_fn.24b: = specific_impl_function %impl.elem3.7a5, @Iterate.WithSelf.Next(%Iterate.facet.b38) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.36e: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.cac) [concrete] +// CHECK:STDOUT: %Optional.HasValue.3c0: %Optional.HasValue.type.36e = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.862: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.cac) [concrete] +// CHECK:STDOUT: %Optional.Get.28e: %Optional.Get.type.862 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.306: %Destroy.type = facet_value %ValueType, (%custom_witness.fef) [concrete] // CHECK:STDOUT: %MaybeUnformed.669: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.306) [concrete] // CHECK:STDOUT: %.b36: type = maybe_unformed_type %ValueType [concrete] // CHECK:STDOUT: %struct_type.value.has_value.5a1: type = struct_type {.value: %MaybeUnformed.669, .has_value: bool} [concrete] -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.605, @Optional.HasValue(%OptionalStorage.facet.7ce) [concrete] -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.5aa, @Optional.Get(%OptionalStorage.facet.7ce) [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.3c0, @Optional.HasValue(%OptionalStorage.facet.cac) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.28e, @Optional.Get(%OptionalStorage.facet.cac) [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk.type: type = fn_type @operator_PlusEqual__carbon_thunk [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk: %operator_PlusEqual__carbon_thunk.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.7: type = fn_type @Destroy.Op.loc31_31.6 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.7: %Destroy.Op.type.1d8f74.7 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.f37: = lookup_impl_witness %impl.elem1.46a, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type.e7e: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.46a) [symbolic] -// CHECK:STDOUT: %.bc1: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.e7e, %impl.elem1.46a [symbolic] -// CHECK:STDOUT: %impl.elem0.c7c: %.bc1 = impl_witness_access %Destroy.lookup_impl_witness.f37, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.cd3: = specific_impl_function %impl.elem0.c7c, @Destroy.WithSelf.Op(%impl.elem1.46a) [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.198: = lookup_impl_witness %impl.elem1.834, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type.9d6: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.834) [symbolic] +// CHECK:STDOUT: %.57c: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.9d6, %impl.elem1.834 [symbolic] +// CHECK:STDOUT: %impl.elem0.152: %.57c = impl_witness_access %Destroy.lookup_impl_witness.198, element0 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.9fb: = specific_impl_function %impl.elem0.152, @Destroy.WithSelf.Op(%impl.elem1.834) [symbolic] // CHECK:STDOUT: %ConstRange: type = class_type @ConstRange [concrete] // CHECK:STDOUT: %pattern_type.025: type = pattern_type %ConstRange [concrete] // CHECK:STDOUT: %Iterator: type = class_type @Iterator.1 [concrete] @@ -3044,22 +3044,22 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.Op.1a2547.8: %Destroy.Op.type.1d8f74.8 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.8: = custom_witness (%Destroy.Op.1a2547.8), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.777: %Destroy.type = facet_value %tuple.type.df8, (%custom_witness.df9cc1.8) [concrete] -// CHECK:STDOUT: %Iterate.impl_witness.466: = impl_witness imports.%Iterate.impl_witness_table.344, @R.as_type.as.Iterate.impl(%facet_value.b1e) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.0b3: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.b1e) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.a27: %R.as_type.as.Iterate.impl.NewCursor.type.0b3 = struct_value () [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.f2b: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.b1e) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.bf3: %R.as_type.as.Iterate.impl.Next.type.f2b = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet.099: %Iterate.type = facet_value %ConstRange, (%Iterate.impl_witness.466) [concrete] -// CHECK:STDOUT: %facet_value.00d: %Iterate_where.type.99d = facet_value %ConstRange, (%Iterate.impl_witness.466) [concrete] +// CHECK:STDOUT: %Iterate.impl_witness.887: = impl_witness imports.%Iterate.impl_witness_table.ccd, @R.as_type.as.Iterate.impl(%facet_value.b1e) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.9c3: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.b1e) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.4e7: %R.as_type.as.Iterate.impl.NewCursor.type.9c3 = struct_value () [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.795: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.b1e) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.4d5: %R.as_type.as.Iterate.impl.Next.type.795 = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet.9a5: %Iterate.type = facet_value %ConstRange, (%Iterate.impl_witness.887) [concrete] +// CHECK:STDOUT: %facet_value.a17: %Iterate_where.type.f9d = facet_value %ConstRange, (%Iterate.impl_witness.887) [concrete] // CHECK:STDOUT: %r.param_patt.a73: %pattern_type.025 = value_param_pattern [concrete] // CHECK:STDOUT: %r.patt.0e2: %pattern_type.025 = at_binding_pattern r, %r.param_patt.a73 [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.e43: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.099) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.be4: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.099) [concrete] -// CHECK:STDOUT: %.da4e: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.e43, %Iterate.facet.099 [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %R.as_type.as.Iterate.impl.NewCursor.a27, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.b1e) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.8d8: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.9a5) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.069: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.9a5) [concrete] +// CHECK:STDOUT: %.2d3f: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.8d8, %Iterate.facet.9a5 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %R.as_type.as.Iterate.impl.NewCursor.4e7, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.b1e) [concrete] // CHECK:STDOUT: %ptr.fc0: type = ptr_type %tuple.type.df8 [concrete] -// CHECK:STDOUT: %.4b8: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.be4, %Iterate.facet.099 [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %R.as_type.as.Iterate.impl.Next.bf3, @R.as_type.as.Iterate.impl.Next(%facet_value.b1e) [concrete] +// CHECK:STDOUT: %.e3b: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.069, %Iterate.facet.9a5 [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %R.as_type.as.Iterate.impl.Next.4d5, @R.as_type.as.Iterate.impl.Next(%facet_value.b1e) [concrete] // CHECK:STDOUT: %Destroy.WithSelf.Op.type.589: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%Destroy.facet.777) [concrete] // CHECK:STDOUT: %.4e1: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.589, %Destroy.facet.777 [concrete] // CHECK:STDOUT: %complete_type.e35: = complete_type_witness %tuple.type.df8 [concrete] @@ -3073,12 +3073,12 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Core.import_ref.bb6: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.e9e) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6cd)] // CHECK:STDOUT: %Core.import_ref.daba: @Optional.%Optional.Get.type (%Optional.Get.type.bb9) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.fa1)] // CHECK:STDOUT: %Core.import_ref.0c6: type = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%DefaultOptionalStorage (constants.%DefaultOptionalStorage.d50)] -// CHECK:STDOUT: %Core.import_ref.f4f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.300) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.f54)] -// CHECK:STDOUT: %Core.import_ref.18f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.800) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.e83)] -// CHECK:STDOUT: %Core.import_ref.c68: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.4bc) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.dc2)] -// CHECK:STDOUT: %Core.import_ref.a83: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.029) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.cb5)] -// CHECK:STDOUT: %Core.import_ref.aaa = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.655 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.f4f, %Core.import_ref.18f, %Core.import_ref.c68, %Core.import_ref.a83, %Core.import_ref.aaa), @T.as_type.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.6d6: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.f62) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.faf)] +// CHECK:STDOUT: %Core.import_ref.6f3: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.973) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.c3a)] +// CHECK:STDOUT: %Core.import_ref.af2: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.d76) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.aa4)] +// CHECK:STDOUT: %Core.import_ref.e31: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.671) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.a54)] +// CHECK:STDOUT: %Core.import_ref.cea = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.199 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.6d6, %Core.import_ref.6f3, %Core.import_ref.af2, %Core.import_ref.e31, %Core.import_ref.cea), @T.as_type.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %N: = namespace [concrete] { // CHECK:STDOUT: .ValueType = %ValueType.decl // CHECK:STDOUT: .ConstRange = %ConstRange.decl @@ -3092,9 +3092,9 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import_ref.301: %facet_type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%facet_value (constants.%facet_value.194)] // CHECK:STDOUT: %Core.import_ref.89f: %Destroy.type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%Destroy.facet (constants.%Destroy.facet.593)] -// CHECK:STDOUT: %Core.import_ref.3e6: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.36f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.29b)] -// CHECK:STDOUT: %Core.import_ref.85d: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.1f7) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.0d6)] -// CHECK:STDOUT: %Iterate.impl_witness_table.344 = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.3e6, %Core.import_ref.85d), @R.as_type.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.940: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.127) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.627)] +// CHECK:STDOUT: %Core.import_ref.fe7: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.d8f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.c6d)] +// CHECK:STDOUT: %Iterate.impl_witness_table.ccd = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.940, %Core.import_ref.fe7), @R.as_type.as.Iterate.impl [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk.decl: %operator_PlusEqual__carbon_thunk.type = fn_decl @operator_PlusEqual__carbon_thunk [concrete = constants.%operator_PlusEqual__carbon_thunk] { // CHECK:STDOUT: // CHECK:STDOUT: } { @@ -3103,83 +3103,83 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ConstRange.decl: type = class_decl @ConstRange [concrete = constants.%ConstRange] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TestIterate(%R.loc27_17.2: %Iterate_where.type.99d) { +// CHECK:STDOUT: generic fn @TestIterate(%R.loc27_17.2: %Iterate_where.type.f9d) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc27_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.8b4)] -// CHECK:STDOUT: %Iterate.facet.loc31_31.5: %Iterate.type = facet_value %R.as_type.loc27_74.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc31_31.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.217)] -// CHECK:STDOUT: %.loc31_31.20: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc31_31.5 [symbolic = %.loc31_31.20 (constants.%.a27)] -// CHECK:STDOUT: %impl.elem2.loc31_31.2: @TestIterate.%.loc31_31.20 (%.a27) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc31_31.2 (constants.%impl.elem2.7c0)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.4: = specific_impl_function %impl.elem2.loc31_31.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc31_31.5) [symbolic = %specific_impl_fn.loc31_31.4 (constants.%specific_impl_fn.e23)] +// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc27_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.173)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.5: %Iterate.type = facet_value %R.as_type.loc27_74.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc31_31.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.5cd)] +// CHECK:STDOUT: %.loc31_31.20: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc31_31.5 [symbolic = %.loc31_31.20 (constants.%.592)] +// CHECK:STDOUT: %impl.elem2.loc31_31.2: @TestIterate.%.loc31_31.20 (%.592) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc31_31.2 (constants.%impl.elem2.ae2)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.4: = specific_impl_function %impl.elem2.loc31_31.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc31_31.5) [symbolic = %specific_impl_fn.loc31_31.4 (constants.%specific_impl_fn.06e)] // CHECK:STDOUT: -// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.530)] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc31_31.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.10a)] -// CHECK:STDOUT: %.loc31_31.21: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc31_31.5 [symbolic = %.loc31_31.21 (constants.%.df57)] -// CHECK:STDOUT: %impl.elem3.loc31_31.2: @TestIterate.%.loc31_31.21 (%.df57) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc31_31.2 (constants.%impl.elem3.199)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.5: = specific_impl_function %impl.elem3.loc31_31.2, @Iterate.WithSelf.Next(%Iterate.facet.loc31_31.5) [symbolic = %specific_impl_fn.loc31_31.5 (constants.%specific_impl_fn.169)] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.e7e)] -// CHECK:STDOUT: %.loc31_31.22: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc31_31.22 (constants.%.bc1)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.f37)] -// CHECK:STDOUT: %impl.elem0.loc31_31.2: @TestIterate.%.loc31_31.22 (%.bc1) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc31_31.2 (constants.%impl.elem0.c7c)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.6: = specific_impl_function %impl.elem0.loc31_31.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc31_31.6 (constants.%specific_impl_fn.cd3)] +// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.d27)] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc31_31.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.d51)] +// CHECK:STDOUT: %.loc31_31.21: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc31_31.5 [symbolic = %.loc31_31.21 (constants.%.524)] +// CHECK:STDOUT: %impl.elem3.loc31_31.2: @TestIterate.%.loc31_31.21 (%.524) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc31_31.2 (constants.%impl.elem3.7a5)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.5: = specific_impl_function %impl.elem3.loc31_31.2, @Iterate.WithSelf.Next(%Iterate.facet.loc31_31.5) [symbolic = %specific_impl_fn.loc31_31.5 (constants.%specific_impl_fn.24b)] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.9d6)] +// CHECK:STDOUT: %.loc31_31.22: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc31_31.22 (constants.%.57c)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.198)] +// CHECK:STDOUT: %impl.elem0.loc31_31.2: @TestIterate.%.loc31_31.22 (%.57c) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc31_31.2 (constants.%impl.elem0.152)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.6: = specific_impl_function %impl.elem0.loc31_31.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc31_31.6 (constants.%specific_impl_fn.9fb)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc27_74.1 (%R.as_type.a62)) { +// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc27_74.1 (%R.as_type.c37)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %i.patt: %pattern_type.e41 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } -// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc27_74.1 (%R.as_type.a62) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc31_31.1: @TestIterate.%.loc31_31.20 (%.a27) = impl_witness_access constants.%Iterate.lookup_impl_witness.8b4, element2 [symbolic = %impl.elem2.loc31_31.2 (constants.%impl.elem2.7c0)] +// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc27_74.1 (%R.as_type.c37) = name_ref r, %r +// CHECK:STDOUT: %impl.elem2.loc31_31.1: @TestIterate.%.loc31_31.20 (%.592) = impl_witness_access constants.%Iterate.lookup_impl_witness.173, element2 [symbolic = %impl.elem2.loc31_31.2 (constants.%impl.elem2.ae2)] // CHECK:STDOUT: %bound_method.loc31_31.1: = bound_method %r.ref, %impl.elem2.loc31_31.1 -// CHECK:STDOUT: %Iterate.facet.loc31_31.1: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc31_31.1: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc31_31.1 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %Iterate.facet.loc31_31.2: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc31_31.2: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc31_31.2 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.1: = specific_impl_function %impl.elem2.loc31_31.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.b19) [symbolic = %specific_impl_fn.loc31_31.4 (constants.%specific_impl_fn.e23)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.1: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc31_31.1: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc31_31.1 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.2: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc31_31.2: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc31_31.2 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.1: = specific_impl_function %impl.elem2.loc31_31.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.b38) [symbolic = %specific_impl_fn.loc31_31.4 (constants.%specific_impl_fn.06e)] // CHECK:STDOUT: %bound_method.loc31_31.2: = bound_method %r.ref, %specific_impl_fn.loc31_31.1 -// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.862) = var_storage invalid -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.862) to %var = call %bound_method.loc31_31.2(%r.ref) +// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.e41) = var_storage invalid +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.e41) to %var = call %bound_method.loc31_31.2(%r.ref) // CHECK:STDOUT: assign %var, %Iterate.WithSelf.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr.loc31: @TestIterate.%ptr (%ptr.530) = addr_of %var -// CHECK:STDOUT: %impl.elem3.loc31_31.1: @TestIterate.%.loc31_31.21 (%.df57) = impl_witness_access constants.%Iterate.lookup_impl_witness.8b4, element3 [symbolic = %impl.elem3.loc31_31.2 (constants.%impl.elem3.199)] +// CHECK:STDOUT: %addr.loc31: @TestIterate.%ptr (%ptr.d27) = addr_of %var +// CHECK:STDOUT: %impl.elem3.loc31_31.1: @TestIterate.%.loc31_31.21 (%.524) = impl_witness_access constants.%Iterate.lookup_impl_witness.173, element3 [symbolic = %impl.elem3.loc31_31.2 (constants.%impl.elem3.7a5)] // CHECK:STDOUT: %bound_method.loc31_31.3: = bound_method %r.ref, %impl.elem3.loc31_31.1 -// CHECK:STDOUT: %Iterate.facet.loc31_31.3: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc31_31.3: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc31_31.3 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %Iterate.facet.loc31_31.4: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc31_31.4: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc31_31.4 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc31_31.5: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %.loc31_31.6: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.2: = specific_impl_function %impl.elem3.loc31_31.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.b19) [symbolic = %specific_impl_fn.loc31_31.5 (constants.%specific_impl_fn.169)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.3: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc31_31.3: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc31_31.3 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.4: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc31_31.4: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc31_31.4 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc31_31.5: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %.loc31_31.6: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.2: = specific_impl_function %impl.elem3.loc31_31.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.b38) [symbolic = %specific_impl_fn.loc31_31.5 (constants.%specific_impl_fn.24b)] // CHECK:STDOUT: %bound_method.loc31_31.4: = bound_method %r.ref, %specific_impl_fn.loc31_31.2 -// CHECK:STDOUT: %.loc31_31.7: ref %Optional.552 = temporary_storage -// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.552 to %.loc31_31.7 = call %bound_method.loc31_31.4(%r.ref, %addr.loc31) -// CHECK:STDOUT: %.loc31_31.8: ref %Optional.552 = temporary %.loc31_31.7, %Iterate.WithSelf.Next.call -// CHECK:STDOUT: %.loc31_31.9: %Optional.HasValue.type.109 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.HasValue.605] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.109 = name_ref HasValue, %.loc31_31.9 [concrete = constants.%Optional.HasValue.605] +// CHECK:STDOUT: %.loc31_31.7: ref %Optional.c14 = temporary_storage +// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.c14 to %.loc31_31.7 = call %bound_method.loc31_31.4(%r.ref, %addr.loc31) +// CHECK:STDOUT: %.loc31_31.8: ref %Optional.c14 = temporary %.loc31_31.7, %Iterate.WithSelf.Next.call +// CHECK:STDOUT: %.loc31_31.9: %Optional.HasValue.type.36e = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.HasValue.3c0] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.36e = name_ref HasValue, %.loc31_31.9 [concrete = constants.%Optional.HasValue.3c0] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc31_31.8, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc31_31.5: = bound_method %.loc31_31.8, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc31_31.10: %Optional.552 = acquire_value %.loc31_31.8 +// CHECK:STDOUT: %.loc31_31.10: %Optional.c14 = acquire_value %.loc31_31.8 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc31_31.5(%.loc31_31.10) // CHECK:STDOUT: %.loc31_31.11: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc31_31.12: bool = converted %Optional.HasValue.call, %.loc31_31.11 // CHECK:STDOUT: if %.loc31_31.12 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc31_31.13: %Optional.Get.type.135 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.Get.5aa] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.135 = name_ref Get, %.loc31_31.13 [concrete = constants.%Optional.Get.5aa] +// CHECK:STDOUT: %.loc31_31.13: %Optional.Get.type.862 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.Get.28e] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.862 = name_ref Get, %.loc31_31.13 [concrete = constants.%Optional.Get.28e] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc31_31.8, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc31_31.6: = bound_method %.loc31_31.8, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc31_31.14: ref %ValueType = temporary_storage -// CHECK:STDOUT: %.loc31_31.15: %Optional.552 = acquire_value %.loc31_31.8 +// CHECK:STDOUT: %.loc31_31.15: %Optional.c14 = acquire_value %.loc31_31.8 // CHECK:STDOUT: %Optional.Get.call: init %ValueType to %.loc31_31.14 = call %bound_method.loc31_31.6(%.loc31_31.15) // CHECK:STDOUT: %.loc31_31.16: ref %ValueType = temporary %.loc31_31.14, %Optional.Get.call // CHECK:STDOUT: %.loc31_31.17: %ValueType = acquire_value %.loc31_31.16 @@ -3205,11 +3205,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ValueType.cpp_destructor.call.loc31: init %empty_tuple.type = call %ValueType.cpp_destructor.bound.loc31(%.loc31_31.16) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc31_31.8, constants.%Destroy.Op.1a2547.7 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc31_31.8) -// CHECK:STDOUT: %impl.elem0.loc31_31.1: @TestIterate.%.loc31_31.22 (%.bc1) = impl_witness_access constants.%Destroy.lookup_impl_witness.f37, element0 [symbolic = %impl.elem0.loc31_31.2 (constants.%impl.elem0.c7c)] +// CHECK:STDOUT: %impl.elem0.loc31_31.1: @TestIterate.%.loc31_31.22 (%.57c) = impl_witness_access constants.%Destroy.lookup_impl_witness.198, element0 [symbolic = %impl.elem0.loc31_31.2 (constants.%impl.elem0.152)] // CHECK:STDOUT: %bound_method.loc31_31.7: = bound_method %var, %impl.elem0.loc31_31.1 -// CHECK:STDOUT: %.loc31_31.18: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %.loc31_31.19: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.3: = specific_impl_function %impl.elem0.loc31_31.1, @Destroy.WithSelf.Op(constants.%impl.elem1.46a) [symbolic = %specific_impl_fn.loc31_31.6 (constants.%specific_impl_fn.cd3)] +// CHECK:STDOUT: %.loc31_31.18: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %.loc31_31.19: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.3: = specific_impl_function %impl.elem0.loc31_31.1, @Destroy.WithSelf.Op(constants.%impl.elem1.834) [symbolic = %specific_impl_fn.loc31_31.6 (constants.%specific_impl_fn.9fb)] // CHECK:STDOUT: %bound_method.loc31_31.8: = bound_method %var, %specific_impl_fn.loc31_31.3 // CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc31_31.8(%var) // CHECK:STDOUT: @@ -3248,7 +3248,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc31_31.6(%self.param: ref %Optional.552) { +// CHECK:STDOUT: fn @Destroy.Op.loc31_31.6(%self.param: ref %Optional.c14) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -3262,7 +3262,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.patt: %pattern_type.e41 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %c.ref: %ConstRange = name_ref c, %c -// CHECK:STDOUT: %impl.elem2: %.da4e = impl_witness_access constants.%Iterate.impl_witness.466, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.a27] +// CHECK:STDOUT: %impl.elem2: %.2d3f = impl_witness_access constants.%Iterate.impl_witness.887, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.4e7] // CHECK:STDOUT: %bound_method.loc45_31.1: = bound_method %c.ref, %impl.elem2 // CHECK:STDOUT: %facet_value.loc45_31.1: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.fef, constants.%custom_witness.c19, constants.%custom_witness.c2f, constants.%custom_witness.21358e.1, constants.%custom_witness.a3150e.1, constants.%custom_witness.1d3, constants.%custom_witness.aa4, constants.%custom_witness.393, constants.%custom_witness.21358e.2, constants.%custom_witness.a3150e.2) [concrete = constants.%facet_value.b1e] // CHECK:STDOUT: %.loc45_31.1: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc45_31.1 [concrete = constants.%facet_value.b1e] @@ -3277,7 +3277,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !for.next: // CHECK:STDOUT: %addr.loc45: %ptr.fc0 = addr_of %var -// CHECK:STDOUT: %impl.elem3: %.4b8 = impl_witness_access constants.%Iterate.impl_witness.466, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.bf3] +// CHECK:STDOUT: %impl.elem3: %.e3b = impl_witness_access constants.%Iterate.impl_witness.887, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.4d5] // CHECK:STDOUT: %bound_method.loc45_31.3: = bound_method %c.ref, %impl.elem3 // CHECK:STDOUT: %facet_value.loc45_31.3: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%ConstRange, (constants.%custom_witness.fef, constants.%custom_witness.c19, constants.%custom_witness.c2f, constants.%custom_witness.21358e.1, constants.%custom_witness.a3150e.1, constants.%custom_witness.1d3, constants.%custom_witness.aa4, constants.%custom_witness.393, constants.%custom_witness.21358e.2, constants.%custom_witness.a3150e.2) [concrete = constants.%facet_value.b1e] // CHECK:STDOUT: %.loc45_31.3: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc45_31.3 [concrete = constants.%facet_value.b1e] @@ -3285,28 +3285,28 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %.loc45_31.4: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%ConstRange, %facet_value.loc45_31.4 [concrete = constants.%facet_value.b1e] // CHECK:STDOUT: %specific_fn.loc45_31.2: = specific_function %impl.elem3, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.b1e) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc45_31.4: = bound_method %c.ref, %specific_fn.loc45_31.2 -// CHECK:STDOUT: %.loc45_31.5: ref %Optional.552 = temporary_storage -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call: init %Optional.552 to %.loc45_31.5 = call %bound_method.loc45_31.4(%c.ref, %addr.loc45) -// CHECK:STDOUT: %.loc45_31.6: ref %Optional.552 = temporary %.loc45_31.5, %R.as_type.as.Iterate.impl.Next.call -// CHECK:STDOUT: %.loc45_31.7: %Optional.HasValue.type.109 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.HasValue.605] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.109 = name_ref HasValue, %.loc45_31.7 [concrete = constants.%Optional.HasValue.605] +// CHECK:STDOUT: %.loc45_31.5: ref %Optional.c14 = temporary_storage +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call: init %Optional.c14 to %.loc45_31.5 = call %bound_method.loc45_31.4(%c.ref, %addr.loc45) +// CHECK:STDOUT: %.loc45_31.6: ref %Optional.c14 = temporary %.loc45_31.5, %R.as_type.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc45_31.7: %Optional.HasValue.type.36e = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.HasValue.3c0] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.36e = name_ref HasValue, %.loc45_31.7 [concrete = constants.%Optional.HasValue.3c0] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc45_31.6, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc45_31.5: = bound_method %.loc45_31.6, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc45_31.8: %Optional.552 = acquire_value %.loc45_31.6 +// CHECK:STDOUT: %.loc45_31.8: %Optional.c14 = acquire_value %.loc45_31.6 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc45_31.5(%.loc45_31.8) // CHECK:STDOUT: %.loc45_31.9: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc45_31.10: bool = converted %Optional.HasValue.call, %.loc45_31.9 // CHECK:STDOUT: if %.loc45_31.10 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc45_31.11: %Optional.Get.type.135 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.Get.5aa] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.135 = name_ref Get, %.loc45_31.11 [concrete = constants.%Optional.Get.5aa] +// CHECK:STDOUT: %.loc45_31.11: %Optional.Get.type.862 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.Get.28e] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.862 = name_ref Get, %.loc45_31.11 [concrete = constants.%Optional.Get.28e] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc45_31.6, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc45_31.6: = bound_method %.loc45_31.6, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc45_31.12: ref %ValueType = temporary_storage -// CHECK:STDOUT: %.loc45_31.13: %Optional.552 = acquire_value %.loc45_31.6 +// CHECK:STDOUT: %.loc45_31.13: %Optional.c14 = acquire_value %.loc45_31.6 // CHECK:STDOUT: %Optional.Get.call: init %ValueType to %.loc45_31.12 = call %bound_method.loc45_31.6(%.loc45_31.13) // CHECK:STDOUT: %.loc45_31.14: ref %ValueType = temporary %.loc45_31.12, %Optional.Get.call // CHECK:STDOUT: %.loc45_31.15: %ValueType = acquire_value %.loc45_31.14 @@ -3339,18 +3339,18 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%R.623) { -// CHECK:STDOUT: %R.patt.loc27_17.2 => constants.%R.patt.324 -// CHECK:STDOUT: %R.loc27_17.1 => constants.%R.623 -// CHECK:STDOUT: %R.as_type.loc27_74.1 => constants.%R.as_type.a62 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.725 -// CHECK:STDOUT: %r.param_patt.loc27_72.2 => constants.%r.param_patt.162 -// CHECK:STDOUT: %r.patt.loc27_72.2 => constants.%r.patt.15b +// CHECK:STDOUT: specific @TestIterate(constants.%R.db4) { +// CHECK:STDOUT: %R.patt.loc27_17.2 => constants.%R.patt.81e +// CHECK:STDOUT: %R.loc27_17.1 => constants.%R.db4 +// CHECK:STDOUT: %R.as_type.loc27_74.1 => constants.%R.as_type.c37 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.17d +// CHECK:STDOUT: %r.param_patt.loc27_72.2 => constants.%r.param_patt.90c +// CHECK:STDOUT: %r.patt.loc27_72.2 => constants.%r.patt.d6c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.00d) { -// CHECK:STDOUT: %R.patt.loc27_17.2 => constants.%R.patt.324 -// CHECK:STDOUT: %R.loc27_17.1 => constants.%facet_value.00d +// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.a17) { +// CHECK:STDOUT: %R.patt.loc27_17.2 => constants.%R.patt.81e +// CHECK:STDOUT: %R.loc27_17.1 => constants.%facet_value.a17 // CHECK:STDOUT: %R.as_type.loc27_74.1 => constants.%ConstRange // CHECK:STDOUT: %pattern_type => constants.%pattern_type.025 // CHECK:STDOUT: %r.param_patt.loc27_72.2 => constants.%r.param_patt.a73 @@ -3358,19 +3358,19 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc27 => constants.%complete_type.357 -// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.466 -// CHECK:STDOUT: %Iterate.facet.loc31_31.5 => constants.%Iterate.facet.099 -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.e43 -// CHECK:STDOUT: %.loc31_31.20 => constants.%.da4e -// CHECK:STDOUT: %impl.elem2.loc31_31.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.a27 +// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.887 +// CHECK:STDOUT: %Iterate.facet.loc31_31.5 => constants.%Iterate.facet.9a5 +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.8d8 +// CHECK:STDOUT: %.loc31_31.20 => constants.%.2d3f +// CHECK:STDOUT: %impl.elem2.loc31_31.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.4e7 // CHECK:STDOUT: %specific_impl_fn.loc31_31.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn // CHECK:STDOUT: %impl.elem1 => constants.%Destroy.facet.777 // CHECK:STDOUT: %as_type => constants.%tuple.type.df8 // CHECK:STDOUT: %require_complete.1 => constants.%complete_type.e35 // CHECK:STDOUT: %ptr => constants.%ptr.fc0 -// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.be4 -// CHECK:STDOUT: %.loc31_31.21 => constants.%.4b8 -// CHECK:STDOUT: %impl.elem3.loc31_31.2 => constants.%R.as_type.as.Iterate.impl.Next.bf3 +// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.069 +// CHECK:STDOUT: %.loc31_31.21 => constants.%.e3b +// CHECK:STDOUT: %impl.elem3.loc31_31.2 => constants.%R.as_type.as.Iterate.impl.Next.4d5 // CHECK:STDOUT: %specific_impl_fn.loc31_31.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.589 // CHECK:STDOUT: %.loc31_31.22 => constants.%.4e1 @@ -3394,13 +3394,10 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Optional.HasValue.6cd: %Optional.HasValue.type.e9e = struct_value () [symbolic] // CHECK:STDOUT: %T.283: %facet_type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.d50: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.029: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.cb5: %T.as_type.as.OptionalStorage.impl.Get.type.029 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.4bc: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.dc2: %T.as_type.as.OptionalStorage.impl.Has.type.4bc = struct_value () [symbolic] -// CHECK:STDOUT: %.Self.35d: %Iterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.b37: = lookup_impl_witness %.Self.35d, @Iterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.903: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.b37, element0 [symbolic_self] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.671: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.a54: %T.as_type.as.OptionalStorage.impl.Get.type.671 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.d76: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.aa4: %T.as_type.as.OptionalStorage.impl.Has.type.d76 = struct_value () [symbolic] // CHECK:STDOUT: %ValueType: type = class_type @ValueType [concrete] // CHECK:STDOUT: %pattern_type.e41: type = pattern_type %ValueType [concrete] // CHECK:STDOUT: %ValueType.cpp_destructor.type: type = fn_type @ValueType.cpp_destructor [concrete] @@ -3415,51 +3412,54 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ValueType.Op.4c94b9.2: %ValueType.Op.type.79266b.2 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.c19: = custom_witness (%ValueType.Op.4c94b9.2), @Copy [concrete] // CHECK:STDOUT: %facet_value.ccb: %facet_type = facet_value %ValueType, (%custom_witness.fef, %custom_witness.c19) [concrete] -// CHECK:STDOUT: %Iterate_where.type.99d: type = facet_type <@Iterate where %impl.elem0.903 = %facet_value.ccb> [concrete] -// CHECK:STDOUT: %pattern_type.3f6: type = pattern_type %Iterate_where.type.99d [concrete] -// CHECK:STDOUT: %R.patt.324: %pattern_type.3f6 = symbolic_binding_pattern R, 0 [symbolic] -// CHECK:STDOUT: %R.623: %Iterate_where.type.99d = symbolic_binding R, 0 [symbolic] -// CHECK:STDOUT: %R.as_type.a62: type = facet_access_type %R.623 [symbolic] -// CHECK:STDOUT: %pattern_type.725: type = pattern_type %R.as_type.a62 [symbolic] -// CHECK:STDOUT: %r.param_patt: %pattern_type.725 = value_param_pattern [symbolic] -// CHECK:STDOUT: %r.patt: %pattern_type.725 = at_binding_pattern r, %r.param_patt [symbolic] +// CHECK:STDOUT: %.Self.500: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.1d8: = lookup_impl_witness %.Self.500, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.294: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.1d8, element0 [symbolic_self] +// CHECK:STDOUT: %Iterate_where.type.f9d: type = facet_type <@Iterate where %impl.elem0.294 = %facet_value.ccb> [concrete] +// CHECK:STDOUT: %pattern_type.c7b: type = pattern_type %Iterate_where.type.f9d [concrete] +// CHECK:STDOUT: %R.patt.81e: %pattern_type.c7b = symbolic_binding_pattern R, 0 [symbolic] +// CHECK:STDOUT: %R.db4: %Iterate_where.type.f9d = symbolic_binding R, 0 [symbolic] +// CHECK:STDOUT: %R.as_type.c37: type = facet_access_type %R.db4 [symbolic] +// CHECK:STDOUT: %pattern_type.17d: type = pattern_type %R.as_type.c37 [symbolic] +// CHECK:STDOUT: %r.param_patt: %pattern_type.17d = value_param_pattern [symbolic] +// CHECK:STDOUT: %r.patt: %pattern_type.17d = at_binding_pattern r, %r.param_patt [symbolic] // CHECK:STDOUT: %i.patt: %pattern_type.e41 = value_binding_pattern i [concrete] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.8b4: = lookup_impl_witness %R.623, @Iterate [symbolic] -// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %R.as_type.a62, (%Iterate.lookup_impl_witness.8b4) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.217: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.10a: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [symbolic] -// CHECK:STDOUT: %.a27: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.217, %Iterate.facet [symbolic] -// CHECK:STDOUT: %impl.elem2.7c0: %.a27 = impl_witness_access %Iterate.lookup_impl_witness.8b4, element2 [symbolic] -// CHECK:STDOUT: %impl.elem1.46a: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.8b4, element1 [symbolic] -// CHECK:STDOUT: %as_type.862: type = facet_access_type %impl.elem1.46a [symbolic] -// CHECK:STDOUT: %specific_impl_fn.e23: = specific_impl_function %impl.elem2.7c0, @Iterate.WithSelf.NewCursor(%Iterate.facet) [symbolic] -// CHECK:STDOUT: %ptr.530: type = ptr_type %as_type.862 [symbolic] -// CHECK:STDOUT: %.df57: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.10a, %Iterate.facet [symbolic] -// CHECK:STDOUT: %impl.elem3.199: %.df57 = impl_witness_access %Iterate.lookup_impl_witness.8b4, element3 [symbolic] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.173: = lookup_impl_witness %R.db4, @Iterate [symbolic] +// CHECK:STDOUT: %Iterate.facet: %Iterate.type = facet_value %R.as_type.c37, (%Iterate.lookup_impl_witness.173) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.5cd: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.d51: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet) [symbolic] +// CHECK:STDOUT: %.592: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.5cd, %Iterate.facet [symbolic] +// CHECK:STDOUT: %impl.elem2.ae2: %.592 = impl_witness_access %Iterate.lookup_impl_witness.173, element2 [symbolic] +// CHECK:STDOUT: %impl.elem1.834: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.173, element1 [symbolic] +// CHECK:STDOUT: %as_type.e41: type = facet_access_type %impl.elem1.834 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.06e: = specific_impl_function %impl.elem2.ae2, @Iterate.WithSelf.NewCursor(%Iterate.facet) [symbolic] +// CHECK:STDOUT: %ptr.d27: type = ptr_type %as_type.e41 [symbolic] +// CHECK:STDOUT: %.524: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.d51, %Iterate.facet [symbolic] +// CHECK:STDOUT: %impl.elem3.7a5: %.524 = impl_witness_access %Iterate.lookup_impl_witness.173, element3 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.257: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%facet_value.ccb) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.3d3: = impl_witness imports.%OptionalStorage.impl_witness_table.6db, @T.as_type.as.OptionalStorage.impl(%facet_value.ccb) [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.642: %OptionalStorage.type = facet_value %ValueType, (%OptionalStorage.impl_witness.3d3) [concrete] -// CHECK:STDOUT: %Optional.be6: type = class_type @Optional, @Optional(%OptionalStorage.facet.642) [concrete] -// CHECK:STDOUT: %specific_impl_fn.169: = specific_impl_function %impl.elem3.199, @Iterate.WithSelf.Next(%Iterate.facet) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.2bf: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.642) [concrete] -// CHECK:STDOUT: %Optional.HasValue.cdf: %Optional.HasValue.type.2bf = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Get.type.112: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.642) [concrete] -// CHECK:STDOUT: %Optional.Get.6bf: %Optional.Get.type.112 = struct_value () [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.96c: = impl_witness imports.%OptionalStorage.impl_witness_table.96b, @T.as_type.as.OptionalStorage.impl(%facet_value.ccb) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.f7e: %OptionalStorage.type = facet_value %ValueType, (%OptionalStorage.impl_witness.96c) [concrete] +// CHECK:STDOUT: %Optional.df6: type = class_type @Optional, @Optional(%OptionalStorage.facet.f7e) [concrete] +// CHECK:STDOUT: %specific_impl_fn.24b: = specific_impl_function %impl.elem3.7a5, @Iterate.WithSelf.Next(%Iterate.facet) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.a63: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.f7e) [concrete] +// CHECK:STDOUT: %Optional.HasValue.bee: %Optional.HasValue.type.a63 = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.fe3: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.f7e) [concrete] +// CHECK:STDOUT: %Optional.Get.3f8: %Optional.Get.type.fe3 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.306: %Destroy.type = facet_value %ValueType, (%custom_witness.fef) [concrete] // CHECK:STDOUT: %MaybeUnformed.669: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.306) [concrete] // CHECK:STDOUT: %.b36: type = maybe_unformed_type %ValueType [concrete] // CHECK:STDOUT: %struct_type.value.has_value.5a1: type = struct_type {.value: %MaybeUnformed.669, .has_value: bool} [concrete] -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.cdf, @Optional.HasValue(%OptionalStorage.facet.642) [concrete] -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.6bf, @Optional.Get(%OptionalStorage.facet.642) [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.bee, @Optional.HasValue(%OptionalStorage.facet.f7e) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.3f8, @Optional.Get(%OptionalStorage.facet.f7e) [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk.type: type = fn_type @operator_PlusEqual__carbon_thunk [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk: %operator_PlusEqual__carbon_thunk.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.7: type = fn_type @Destroy.Op.loc31_31.6 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.7: %Destroy.Op.type.1d8f74.7 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.f37: = lookup_impl_witness %impl.elem1.46a, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type.e7e: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.46a) [symbolic] -// CHECK:STDOUT: %.bc1: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.e7e, %impl.elem1.46a [symbolic] -// CHECK:STDOUT: %impl.elem0.c7c: %.bc1 = impl_witness_access %Destroy.lookup_impl_witness.f37, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.cd3: = specific_impl_function %impl.elem0.c7c, @Destroy.WithSelf.Op(%impl.elem1.46a) [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.198: = lookup_impl_witness %impl.elem1.834, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type.9d6: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.834) [symbolic] +// CHECK:STDOUT: %.57c: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.9d6, %impl.elem1.834 [symbolic] +// CHECK:STDOUT: %impl.elem0.152: %.57c = impl_witness_access %Destroy.lookup_impl_witness.198, element0 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.9fb: = specific_impl_function %impl.elem0.152, @Destroy.WithSelf.Op(%impl.elem1.834) [symbolic] // CHECK:STDOUT: %MutableRange: type = class_type @MutableRange [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -3471,12 +3471,12 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Core.import_ref.bb6: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.e9e) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6cd)] // CHECK:STDOUT: %Core.import_ref.daba: @Optional.%Optional.Get.type (%Optional.Get.type.bb9) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.fa1)] // CHECK:STDOUT: %Core.import_ref.0c6: type = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%DefaultOptionalStorage (constants.%DefaultOptionalStorage.d50)] -// CHECK:STDOUT: %Core.import_ref.c86 = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Core.import_ref.91a = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %Core.import_ref.c68: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.4bc) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.dc2)] -// CHECK:STDOUT: %Core.import_ref.a83: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.029) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.cb5)] -// CHECK:STDOUT: %Core.import_ref.aaa = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.6db = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.c86, %Core.import_ref.91a, %Core.import_ref.c68, %Core.import_ref.a83, %Core.import_ref.aaa), @T.as_type.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.887 = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Core.import_ref.6eb5 = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %Core.import_ref.af2: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.d76) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.aa4)] +// CHECK:STDOUT: %Core.import_ref.e31: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.671) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.a54)] +// CHECK:STDOUT: %Core.import_ref.cea = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.96b = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.887, %Core.import_ref.6eb5, %Core.import_ref.af2, %Core.import_ref.e31, %Core.import_ref.cea), @T.as_type.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %N: = namespace [concrete] { // CHECK:STDOUT: .ValueType = %ValueType.decl // CHECK:STDOUT: .MutableRange = %MutableRange.decl @@ -3496,83 +3496,83 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %MutableRange.decl: type = class_decl @MutableRange [concrete = constants.%MutableRange] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TestIterate(%R.loc27_17.2: %Iterate_where.type.99d) { +// CHECK:STDOUT: generic fn @TestIterate(%R.loc27_17.2: %Iterate_where.type.f9d) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc27_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.8b4)] +// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc27_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.173)] // CHECK:STDOUT: %Iterate.facet.loc31_31.5: %Iterate.type = facet_value %R.as_type.loc27_74.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc31_31.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.217)] -// CHECK:STDOUT: %.loc31_31.20: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc31_31.5 [symbolic = %.loc31_31.20 (constants.%.a27)] -// CHECK:STDOUT: %impl.elem2.loc31_31.2: @TestIterate.%.loc31_31.20 (%.a27) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc31_31.2 (constants.%impl.elem2.7c0)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.4: = specific_impl_function %impl.elem2.loc31_31.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc31_31.5) [symbolic = %specific_impl_fn.loc31_31.4 (constants.%specific_impl_fn.e23)] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc31_31.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.5cd)] +// CHECK:STDOUT: %.loc31_31.20: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc31_31.5 [symbolic = %.loc31_31.20 (constants.%.592)] +// CHECK:STDOUT: %impl.elem2.loc31_31.2: @TestIterate.%.loc31_31.20 (%.592) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc31_31.2 (constants.%impl.elem2.ae2)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.4: = specific_impl_function %impl.elem2.loc31_31.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc31_31.5) [symbolic = %specific_impl_fn.loc31_31.4 (constants.%specific_impl_fn.06e)] // CHECK:STDOUT: -// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.530)] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc31_31.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.10a)] -// CHECK:STDOUT: %.loc31_31.21: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc31_31.5 [symbolic = %.loc31_31.21 (constants.%.df57)] -// CHECK:STDOUT: %impl.elem3.loc31_31.2: @TestIterate.%.loc31_31.21 (%.df57) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc31_31.2 (constants.%impl.elem3.199)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.5: = specific_impl_function %impl.elem3.loc31_31.2, @Iterate.WithSelf.Next(%Iterate.facet.loc31_31.5) [symbolic = %specific_impl_fn.loc31_31.5 (constants.%specific_impl_fn.169)] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.e7e)] -// CHECK:STDOUT: %.loc31_31.22: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc31_31.22 (constants.%.bc1)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.f37)] -// CHECK:STDOUT: %impl.elem0.loc31_31.2: @TestIterate.%.loc31_31.22 (%.bc1) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc31_31.2 (constants.%impl.elem0.c7c)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.6: = specific_impl_function %impl.elem0.loc31_31.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc31_31.6 (constants.%specific_impl_fn.cd3)] +// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.d27)] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc31_31.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.d51)] +// CHECK:STDOUT: %.loc31_31.21: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc31_31.5 [symbolic = %.loc31_31.21 (constants.%.524)] +// CHECK:STDOUT: %impl.elem3.loc31_31.2: @TestIterate.%.loc31_31.21 (%.524) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc31_31.2 (constants.%impl.elem3.7a5)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.5: = specific_impl_function %impl.elem3.loc31_31.2, @Iterate.WithSelf.Next(%Iterate.facet.loc31_31.5) [symbolic = %specific_impl_fn.loc31_31.5 (constants.%specific_impl_fn.24b)] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.9d6)] +// CHECK:STDOUT: %.loc31_31.22: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc31_31.22 (constants.%.57c)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.198)] +// CHECK:STDOUT: %impl.elem0.loc31_31.2: @TestIterate.%.loc31_31.22 (%.57c) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc31_31.2 (constants.%impl.elem0.152)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.6: = specific_impl_function %impl.elem0.loc31_31.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc31_31.6 (constants.%specific_impl_fn.9fb)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc27_74.1 (%R.as_type.a62)) { +// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc27_74.1 (%R.as_type.c37)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %i.patt: %pattern_type.e41 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } -// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc27_74.1 (%R.as_type.a62) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc31_31.1: @TestIterate.%.loc31_31.20 (%.a27) = impl_witness_access constants.%Iterate.lookup_impl_witness.8b4, element2 [symbolic = %impl.elem2.loc31_31.2 (constants.%impl.elem2.7c0)] +// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc27_74.1 (%R.as_type.c37) = name_ref r, %r +// CHECK:STDOUT: %impl.elem2.loc31_31.1: @TestIterate.%.loc31_31.20 (%.592) = impl_witness_access constants.%Iterate.lookup_impl_witness.173, element2 [symbolic = %impl.elem2.loc31_31.2 (constants.%impl.elem2.ae2)] // CHECK:STDOUT: %bound_method.loc31_31.1: = bound_method %r.ref, %impl.elem2.loc31_31.1 -// CHECK:STDOUT: %Iterate.facet.loc31_31.1: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %.loc31_31.1: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc31_31.1 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %Iterate.facet.loc31_31.2: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %.loc31_31.2: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc31_31.2 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.1: = specific_impl_function %impl.elem2.loc31_31.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet) [symbolic = %specific_impl_fn.loc31_31.4 (constants.%specific_impl_fn.e23)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.1: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] +// CHECK:STDOUT: %.loc31_31.1: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc31_31.1 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.2: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] +// CHECK:STDOUT: %.loc31_31.2: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc31_31.2 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.1: = specific_impl_function %impl.elem2.loc31_31.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet) [symbolic = %specific_impl_fn.loc31_31.4 (constants.%specific_impl_fn.06e)] // CHECK:STDOUT: %bound_method.loc31_31.2: = bound_method %r.ref, %specific_impl_fn.loc31_31.1 -// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.862) = var_storage invalid -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.862) to %var = call %bound_method.loc31_31.2(%r.ref) +// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.e41) = var_storage invalid +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.e41) to %var = call %bound_method.loc31_31.2(%r.ref) // CHECK:STDOUT: assign %var, %Iterate.WithSelf.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr.loc31: @TestIterate.%ptr (%ptr.530) = addr_of %var -// CHECK:STDOUT: %impl.elem3.loc31_31.1: @TestIterate.%.loc31_31.21 (%.df57) = impl_witness_access constants.%Iterate.lookup_impl_witness.8b4, element3 [symbolic = %impl.elem3.loc31_31.2 (constants.%impl.elem3.199)] +// CHECK:STDOUT: %addr.loc31: @TestIterate.%ptr (%ptr.d27) = addr_of %var +// CHECK:STDOUT: %impl.elem3.loc31_31.1: @TestIterate.%.loc31_31.21 (%.524) = impl_witness_access constants.%Iterate.lookup_impl_witness.173, element3 [symbolic = %impl.elem3.loc31_31.2 (constants.%impl.elem3.7a5)] // CHECK:STDOUT: %bound_method.loc31_31.3: = bound_method %r.ref, %impl.elem3.loc31_31.1 -// CHECK:STDOUT: %Iterate.facet.loc31_31.3: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %.loc31_31.3: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc31_31.3 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %Iterate.facet.loc31_31.4: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %.loc31_31.4: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc31_31.4 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] -// CHECK:STDOUT: %.loc31_31.5: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %.loc31_31.6: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.2: = specific_impl_function %impl.elem3.loc31_31.1, @Iterate.WithSelf.Next(constants.%Iterate.facet) [symbolic = %specific_impl_fn.loc31_31.5 (constants.%specific_impl_fn.169)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.3: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] +// CHECK:STDOUT: %.loc31_31.3: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc31_31.3 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] +// CHECK:STDOUT: %Iterate.facet.loc31_31.4: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] +// CHECK:STDOUT: %.loc31_31.4: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc31_31.4 [symbolic = %Iterate.facet.loc31_31.5 (constants.%Iterate.facet)] +// CHECK:STDOUT: %.loc31_31.5: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %.loc31_31.6: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.2: = specific_impl_function %impl.elem3.loc31_31.1, @Iterate.WithSelf.Next(constants.%Iterate.facet) [symbolic = %specific_impl_fn.loc31_31.5 (constants.%specific_impl_fn.24b)] // CHECK:STDOUT: %bound_method.loc31_31.4: = bound_method %r.ref, %specific_impl_fn.loc31_31.2 -// CHECK:STDOUT: %.loc31_31.7: ref %Optional.be6 = temporary_storage -// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.be6 to %.loc31_31.7 = call %bound_method.loc31_31.4(%r.ref, %addr.loc31) -// CHECK:STDOUT: %.loc31_31.8: ref %Optional.be6 = temporary %.loc31_31.7, %Iterate.WithSelf.Next.call -// CHECK:STDOUT: %.loc31_31.9: %Optional.HasValue.type.2bf = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.642) [concrete = constants.%Optional.HasValue.cdf] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.2bf = name_ref HasValue, %.loc31_31.9 [concrete = constants.%Optional.HasValue.cdf] +// CHECK:STDOUT: %.loc31_31.7: ref %Optional.df6 = temporary_storage +// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.df6 to %.loc31_31.7 = call %bound_method.loc31_31.4(%r.ref, %addr.loc31) +// CHECK:STDOUT: %.loc31_31.8: ref %Optional.df6 = temporary %.loc31_31.7, %Iterate.WithSelf.Next.call +// CHECK:STDOUT: %.loc31_31.9: %Optional.HasValue.type.a63 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.f7e) [concrete = constants.%Optional.HasValue.bee] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.a63 = name_ref HasValue, %.loc31_31.9 [concrete = constants.%Optional.HasValue.bee] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc31_31.8, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.642) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.f7e) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc31_31.5: = bound_method %.loc31_31.8, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc31_31.10: %Optional.be6 = acquire_value %.loc31_31.8 +// CHECK:STDOUT: %.loc31_31.10: %Optional.df6 = acquire_value %.loc31_31.8 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc31_31.5(%.loc31_31.10) // CHECK:STDOUT: %.loc31_31.11: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc31_31.12: bool = converted %Optional.HasValue.call, %.loc31_31.11 // CHECK:STDOUT: if %.loc31_31.12 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc31_31.13: %Optional.Get.type.112 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.642) [concrete = constants.%Optional.Get.6bf] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.112 = name_ref Get, %.loc31_31.13 [concrete = constants.%Optional.Get.6bf] +// CHECK:STDOUT: %.loc31_31.13: %Optional.Get.type.fe3 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.f7e) [concrete = constants.%Optional.Get.3f8] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.fe3 = name_ref Get, %.loc31_31.13 [concrete = constants.%Optional.Get.3f8] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc31_31.8, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.642) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.f7e) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc31_31.6: = bound_method %.loc31_31.8, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc31_31.14: ref %ValueType = temporary_storage -// CHECK:STDOUT: %.loc31_31.15: %Optional.be6 = acquire_value %.loc31_31.8 +// CHECK:STDOUT: %.loc31_31.15: %Optional.df6 = acquire_value %.loc31_31.8 // CHECK:STDOUT: %Optional.Get.call: init %ValueType to %.loc31_31.14 = call %bound_method.loc31_31.6(%.loc31_31.15) // CHECK:STDOUT: %.loc31_31.16: ref %ValueType = temporary %.loc31_31.14, %Optional.Get.call // CHECK:STDOUT: %.loc31_31.17: %ValueType = acquire_value %.loc31_31.16 @@ -3598,11 +3598,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ValueType.cpp_destructor.call.loc31: init %empty_tuple.type = call %ValueType.cpp_destructor.bound.loc31(%.loc31_31.16) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc31_31.8, constants.%Destroy.Op.1a2547.7 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc31_31.8) -// CHECK:STDOUT: %impl.elem0.loc31_31.1: @TestIterate.%.loc31_31.22 (%.bc1) = impl_witness_access constants.%Destroy.lookup_impl_witness.f37, element0 [symbolic = %impl.elem0.loc31_31.2 (constants.%impl.elem0.c7c)] +// CHECK:STDOUT: %impl.elem0.loc31_31.1: @TestIterate.%.loc31_31.22 (%.57c) = impl_witness_access constants.%Destroy.lookup_impl_witness.198, element0 [symbolic = %impl.elem0.loc31_31.2 (constants.%impl.elem0.152)] // CHECK:STDOUT: %bound_method.loc31_31.7: = bound_method %var, %impl.elem0.loc31_31.1 -// CHECK:STDOUT: %.loc31_31.18: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %.loc31_31.19: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %specific_impl_fn.loc31_31.3: = specific_impl_function %impl.elem0.loc31_31.1, @Destroy.WithSelf.Op(constants.%impl.elem1.46a) [symbolic = %specific_impl_fn.loc31_31.6 (constants.%specific_impl_fn.cd3)] +// CHECK:STDOUT: %.loc31_31.18: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %.loc31_31.19: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %specific_impl_fn.loc31_31.3: = specific_impl_function %impl.elem0.loc31_31.1, @Destroy.WithSelf.Op(constants.%impl.elem1.834) [symbolic = %specific_impl_fn.loc31_31.6 (constants.%specific_impl_fn.9fb)] // CHECK:STDOUT: %bound_method.loc31_31.8: = bound_method %var, %specific_impl_fn.loc31_31.3 // CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc31_31.8(%var) // CHECK:STDOUT: @@ -3641,7 +3641,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc31_31.6(%self.param: ref %Optional.be6) { +// CHECK:STDOUT: fn @Destroy.Op.loc31_31.6(%self.param: ref %Optional.df6) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -3682,11 +3682,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%R.623) { -// CHECK:STDOUT: %R.patt.loc27_17.2 => constants.%R.patt.324 -// CHECK:STDOUT: %R.loc27_17.1 => constants.%R.623 -// CHECK:STDOUT: %R.as_type.loc27_74.1 => constants.%R.as_type.a62 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.725 +// CHECK:STDOUT: specific @TestIterate(constants.%R.db4) { +// CHECK:STDOUT: %R.patt.loc27_17.2 => constants.%R.patt.81e +// CHECK:STDOUT: %R.loc27_17.1 => constants.%R.db4 +// CHECK:STDOUT: %R.as_type.loc27_74.1 => constants.%R.as_type.c37 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.17d // CHECK:STDOUT: %r.param_patt.loc27_72.2 => constants.%r.param_patt // CHECK:STDOUT: %r.patt.loc27_72.2 => constants.%r.patt // CHECK:STDOUT: } @@ -3706,17 +3706,14 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Optional.HasValue.6cd: %Optional.HasValue.type.e9e = struct_value () [symbolic] // CHECK:STDOUT: %T.283: %facet_type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.d50: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.029: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.cb5: %T.as_type.as.OptionalStorage.impl.Get.type.029 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.4bc: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.dc2: %T.as_type.as.OptionalStorage.impl.Has.type.4bc = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.800: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.e83: %T.as_type.as.OptionalStorage.impl.Some.type.800 = struct_value () [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.300: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] -// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.f54: %T.as_type.as.OptionalStorage.impl.None.type.300 = struct_value () [symbolic] -// CHECK:STDOUT: %.Self.35d: %Iterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.b37: = lookup_impl_witness %.Self.35d, @Iterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.903: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.b37, element0 [symbolic_self] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.type.671: type = fn_type @T.as_type.as.OptionalStorage.impl.Get, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Get.a54: %T.as_type.as.OptionalStorage.impl.Get.type.671 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.type.d76: type = fn_type @T.as_type.as.OptionalStorage.impl.Has, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Has.aa4: %T.as_type.as.OptionalStorage.impl.Has.type.d76 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.type.973: type = fn_type @T.as_type.as.OptionalStorage.impl.Some, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.Some.c3a: %T.as_type.as.OptionalStorage.impl.Some.type.973 = struct_value () [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.type.f62: type = fn_type @T.as_type.as.OptionalStorage.impl.None, @T.as_type.as.OptionalStorage.impl(%T.283) [symbolic] +// CHECK:STDOUT: %T.as_type.as.OptionalStorage.impl.None.faf: %T.as_type.as.OptionalStorage.impl.None.type.f62 = struct_value () [symbolic] // CHECK:STDOUT: %ValueType: type = class_type @ValueType [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -3733,23 +3730,26 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ValueType.Op.4c94b9.2: %ValueType.Op.type.79266b.2 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.c19: = custom_witness (%ValueType.Op.4c94b9.2), @Copy [concrete] // CHECK:STDOUT: %facet_value.ccb: %facet_type = facet_value %ValueType, (%custom_witness.fef, %custom_witness.c19) [concrete] -// CHECK:STDOUT: %Iterate_where.type.99d: type = facet_type <@Iterate where %impl.elem0.903 = %facet_value.ccb> [concrete] -// CHECK:STDOUT: %pattern_type.3f6: type = pattern_type %Iterate_where.type.99d [concrete] -// CHECK:STDOUT: %R.patt.324: %pattern_type.3f6 = symbolic_binding_pattern R, 0 [symbolic] -// CHECK:STDOUT: %R.623: %Iterate_where.type.99d = symbolic_binding R, 0 [symbolic] -// CHECK:STDOUT: %R.as_type.a62: type = facet_access_type %R.623 [symbolic] -// CHECK:STDOUT: %pattern_type.725: type = pattern_type %R.as_type.a62 [symbolic] -// CHECK:STDOUT: %r.param_patt.162: %pattern_type.725 = value_param_pattern [symbolic] -// CHECK:STDOUT: %r.patt.15b: %pattern_type.725 = at_binding_pattern r, %r.param_patt.162 [symbolic] +// CHECK:STDOUT: %.Self.500: %Iterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.1d8: = lookup_impl_witness %.Self.500, @Iterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.294: %facet_type = impl_witness_access %Iterate.lookup_impl_witness.1d8, element0 [symbolic_self] +// CHECK:STDOUT: %Iterate_where.type.f9d: type = facet_type <@Iterate where %impl.elem0.294 = %facet_value.ccb> [concrete] +// CHECK:STDOUT: %pattern_type.c7b: type = pattern_type %Iterate_where.type.f9d [concrete] +// CHECK:STDOUT: %R.patt.81e: %pattern_type.c7b = symbolic_binding_pattern R, 0 [symbolic] +// CHECK:STDOUT: %R.db4: %Iterate_where.type.f9d = symbolic_binding R, 0 [symbolic] +// CHECK:STDOUT: %R.as_type.c37: type = facet_access_type %R.db4 [symbolic] +// CHECK:STDOUT: %pattern_type.17d: type = pattern_type %R.as_type.c37 [symbolic] +// CHECK:STDOUT: %r.param_patt.90c: %pattern_type.17d = value_param_pattern [symbolic] +// CHECK:STDOUT: %r.patt.d6c: %pattern_type.17d = at_binding_pattern r, %r.param_patt.90c [symbolic] // CHECK:STDOUT: %i.patt: %pattern_type.e41 = value_binding_pattern i [concrete] // CHECK:STDOUT: %CppRangeForIterate.type: type = facet_type <@CppRangeForIterate> [concrete] -// CHECK:STDOUT: %.Self.6bd: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.143: = lookup_impl_witness %.Self.6bd, @CppRangeForIterate [symbolic_self] -// CHECK:STDOUT: %impl.elem0.109: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element0 [symbolic_self] -// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.712: = lookup_impl_witness %impl.elem0.109, @CppUnsafeDeref [symbolic_self] -// CHECK:STDOUT: %impl.elem0.56a: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.712, element0 [symbolic_self] -// CHECK:STDOUT: %impl.elem1.222: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.143, element1 [symbolic_self] -// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.109 impls @Destroy and %impl.elem0.109 impls @Copy and %impl.elem0.109 impls @CppUnsafeDeref and %impl.elem0.109 impls @EqWith, @EqWith(%impl.elem1.222) and %impl.elem0.109 impls @Inc and %impl.elem0.56a impls @Destroy and %impl.elem0.56a impls @Copy and %impl.elem1.222 impls @Destroy and %impl.elem1.222 impls @Copy> [concrete] +// CHECK:STDOUT: %.Self.aed: %CppRangeForIterate.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.f6b: = lookup_impl_witness %.Self.aed, @CppRangeForIterate [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b73: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element0 [symbolic_self] +// CHECK:STDOUT: %CppUnsafeDeref.lookup_impl_witness.595: = lookup_impl_witness %impl.elem0.b73, @CppUnsafeDeref [symbolic_self] +// CHECK:STDOUT: %impl.elem0.a2f: type = impl_witness_access %CppUnsafeDeref.lookup_impl_witness.595, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.228: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.f6b, element1 [symbolic_self] +// CHECK:STDOUT: %CppRangeForIterate_where.type.1c721f.1: type = facet_type <@CppRangeForIterate where %impl.elem0.b73 impls @Destroy and %impl.elem0.b73 impls @Copy and %impl.elem0.b73 impls @CppUnsafeDeref and %impl.elem0.b73 impls @EqWith, @EqWith(%impl.elem1.228) and %impl.elem0.b73 impls @Inc and %impl.elem0.a2f impls @Destroy and %impl.elem0.a2f impls @Copy and %impl.elem1.228 impls @Destroy and %impl.elem1.228 impls @Copy> [concrete] // CHECK:STDOUT: %R.39b: %CppRangeForIterate_where.type.1c721f.1 = symbolic_binding R, 0 [symbolic] // CHECK:STDOUT: %CppRangeForIterate.lookup_impl_witness.7e2712.2: = lookup_impl_witness %R.39b, @CppRangeForIterate [symbolic] // CHECK:STDOUT: %impl.elem1.7a0bff.2: type = impl_witness_access %CppRangeForIterate.lookup_impl_witness.7e2712.2, element1 [symbolic] @@ -3762,46 +3762,46 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.lookup_impl_witness.ec3: = lookup_impl_witness %impl.elem0.af7, @Destroy [symbolic] // CHECK:STDOUT: %Copy.lookup_impl_witness.a7a: = lookup_impl_witness %impl.elem0.af7, @Copy [symbolic] // CHECK:STDOUT: %facet_value.194: %facet_type = facet_value %impl.elem0.af7, (%Destroy.lookup_impl_witness.ec3, %Copy.lookup_impl_witness.a7a) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.1f7: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.0d6: %R.as_type.as.Iterate.impl.Next.type.1f7 = struct_value () [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.36f: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.29b: %R.as_type.as.Iterate.impl.NewCursor.type.36f = struct_value () [symbolic] -// CHECK:STDOUT: %Iterate.lookup_impl_witness.8b4: = lookup_impl_witness %R.623, @Iterate [symbolic] -// CHECK:STDOUT: %Iterate.facet.b19: %Iterate.type = facet_value %R.as_type.a62, (%Iterate.lookup_impl_witness.8b4) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.217: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.b19) [symbolic] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.10a: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.b19) [symbolic] -// CHECK:STDOUT: %.a27: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.217, %Iterate.facet.b19 [symbolic] -// CHECK:STDOUT: %impl.elem2.7c0: %.a27 = impl_witness_access %Iterate.lookup_impl_witness.8b4, element2 [symbolic] -// CHECK:STDOUT: %impl.elem1.46a: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.8b4, element1 [symbolic] -// CHECK:STDOUT: %as_type.862: type = facet_access_type %impl.elem1.46a [symbolic] -// CHECK:STDOUT: %specific_impl_fn.e23: = specific_impl_function %impl.elem2.7c0, @Iterate.WithSelf.NewCursor(%Iterate.facet.b19) [symbolic] -// CHECK:STDOUT: %ptr.530: type = ptr_type %as_type.862 [symbolic] -// CHECK:STDOUT: %.df57: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.10a, %Iterate.facet.b19 [symbolic] -// CHECK:STDOUT: %impl.elem3.199: %.df57 = impl_witness_access %Iterate.lookup_impl_witness.8b4, element3 [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.d8f: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.c6d: %R.as_type.as.Iterate.impl.Next.type.d8f = struct_value () [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.127: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%R.39b) [symbolic] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.627: %R.as_type.as.Iterate.impl.NewCursor.type.127 = struct_value () [symbolic] +// CHECK:STDOUT: %Iterate.lookup_impl_witness.173: = lookup_impl_witness %R.db4, @Iterate [symbolic] +// CHECK:STDOUT: %Iterate.facet.b38: %Iterate.type = facet_value %R.as_type.c37, (%Iterate.lookup_impl_witness.173) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.5cd: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.b38) [symbolic] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.d51: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.b38) [symbolic] +// CHECK:STDOUT: %.592: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.5cd, %Iterate.facet.b38 [symbolic] +// CHECK:STDOUT: %impl.elem2.ae2: %.592 = impl_witness_access %Iterate.lookup_impl_witness.173, element2 [symbolic] +// CHECK:STDOUT: %impl.elem1.834: %Destroy.type = impl_witness_access %Iterate.lookup_impl_witness.173, element1 [symbolic] +// CHECK:STDOUT: %as_type.e41: type = facet_access_type %impl.elem1.834 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.06e: = specific_impl_function %impl.elem2.ae2, @Iterate.WithSelf.NewCursor(%Iterate.facet.b38) [symbolic] +// CHECK:STDOUT: %ptr.d27: type = ptr_type %as_type.e41 [symbolic] +// CHECK:STDOUT: %.524: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.d51, %Iterate.facet.b38 [symbolic] +// CHECK:STDOUT: %impl.elem3.7a5: %.524 = impl_witness_access %Iterate.lookup_impl_witness.173, element3 [symbolic] // CHECK:STDOUT: %DefaultOptionalStorage.257: type = class_type @DefaultOptionalStorage, @DefaultOptionalStorage(%facet_value.ccb) [concrete] -// CHECK:STDOUT: %OptionalStorage.impl_witness.be5: = impl_witness imports.%OptionalStorage.impl_witness_table.655, @T.as_type.as.OptionalStorage.impl(%facet_value.ccb) [concrete] -// CHECK:STDOUT: %OptionalStorage.facet.7ce: %OptionalStorage.type = facet_value %ValueType, (%OptionalStorage.impl_witness.be5) [concrete] -// CHECK:STDOUT: %Optional.552: type = class_type @Optional, @Optional(%OptionalStorage.facet.7ce) [concrete] -// CHECK:STDOUT: %specific_impl_fn.169: = specific_impl_function %impl.elem3.199, @Iterate.WithSelf.Next(%Iterate.facet.b19) [symbolic] -// CHECK:STDOUT: %Optional.HasValue.type.109: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.7ce) [concrete] -// CHECK:STDOUT: %Optional.HasValue.605: %Optional.HasValue.type.109 = struct_value () [concrete] -// CHECK:STDOUT: %Optional.Get.type.135: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.7ce) [concrete] -// CHECK:STDOUT: %Optional.Get.5aa: %Optional.Get.type.135 = struct_value () [concrete] +// CHECK:STDOUT: %OptionalStorage.impl_witness.9db: = impl_witness imports.%OptionalStorage.impl_witness_table.199, @T.as_type.as.OptionalStorage.impl(%facet_value.ccb) [concrete] +// CHECK:STDOUT: %OptionalStorage.facet.cac: %OptionalStorage.type = facet_value %ValueType, (%OptionalStorage.impl_witness.9db) [concrete] +// CHECK:STDOUT: %Optional.c14: type = class_type @Optional, @Optional(%OptionalStorage.facet.cac) [concrete] +// CHECK:STDOUT: %specific_impl_fn.24b: = specific_impl_function %impl.elem3.7a5, @Iterate.WithSelf.Next(%Iterate.facet.b38) [symbolic] +// CHECK:STDOUT: %Optional.HasValue.type.36e: type = fn_type @Optional.HasValue, @Optional(%OptionalStorage.facet.cac) [concrete] +// CHECK:STDOUT: %Optional.HasValue.3c0: %Optional.HasValue.type.36e = struct_value () [concrete] +// CHECK:STDOUT: %Optional.Get.type.862: type = fn_type @Optional.Get, @Optional(%OptionalStorage.facet.cac) [concrete] +// CHECK:STDOUT: %Optional.Get.28e: %Optional.Get.type.862 = struct_value () [concrete] // CHECK:STDOUT: %Destroy.facet.306: %Destroy.type = facet_value %ValueType, (%custom_witness.fef) [concrete] // CHECK:STDOUT: %MaybeUnformed.669: type = class_type @MaybeUnformed, @MaybeUnformed(%Destroy.facet.306) [concrete] // CHECK:STDOUT: %.b36: type = maybe_unformed_type %ValueType [concrete] // CHECK:STDOUT: %struct_type.value.has_value.5a1: type = struct_type {.value: %MaybeUnformed.669, .has_value: bool} [concrete] -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.605, @Optional.HasValue(%OptionalStorage.facet.7ce) [concrete] -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.5aa, @Optional.Get(%OptionalStorage.facet.7ce) [concrete] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %Optional.HasValue.3c0, @Optional.HasValue(%OptionalStorage.facet.cac) [concrete] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Optional.Get.28e, @Optional.Get(%OptionalStorage.facet.cac) [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk.type: type = fn_type @operator_PlusEqual__carbon_thunk [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk: %operator_PlusEqual__carbon_thunk.type = struct_value () [concrete] // CHECK:STDOUT: %Destroy.Op.type.1d8f74.7: type = fn_type @Destroy.Op.loc38_31.6 [concrete] // CHECK:STDOUT: %Destroy.Op.1a2547.7: %Destroy.Op.type.1d8f74.7 = struct_value () [concrete] -// CHECK:STDOUT: %Destroy.lookup_impl_witness.f37: = lookup_impl_witness %impl.elem1.46a, @Destroy [symbolic] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type.e7e: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.46a) [symbolic] -// CHECK:STDOUT: %.bc1: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.e7e, %impl.elem1.46a [symbolic] -// CHECK:STDOUT: %impl.elem0.c7c: %.bc1 = impl_witness_access %Destroy.lookup_impl_witness.f37, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.cd3: = specific_impl_function %impl.elem0.c7c, @Destroy.WithSelf.Op(%impl.elem1.46a) [symbolic] +// CHECK:STDOUT: %Destroy.lookup_impl_witness.198: = lookup_impl_witness %impl.elem1.834, @Destroy [symbolic] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type.9d6: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1.834) [symbolic] +// CHECK:STDOUT: %.57c: type = fn_type_with_self_type %Destroy.WithSelf.Op.type.9d6, %impl.elem1.834 [symbolic] +// CHECK:STDOUT: %impl.elem0.152: %.57c = impl_witness_access %Destroy.lookup_impl_witness.198, element0 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.9fb: = specific_impl_function %impl.elem0.152, @Destroy.WithSelf.Op(%impl.elem1.834) [symbolic] // CHECK:STDOUT: %MutableAndConstRange: type = class_type @MutableAndConstRange [concrete] // CHECK:STDOUT: %pattern_type.394: type = pattern_type %MutableAndConstRange [concrete] // CHECK:STDOUT: %Iterator: type = class_type @Iterator.1 [concrete] @@ -3833,22 +3833,22 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Destroy.Op.1a2547.8: %Destroy.Op.type.1d8f74.8 = struct_value () [concrete] // CHECK:STDOUT: %custom_witness.df9cc1.8: = custom_witness (%Destroy.Op.1a2547.8), @Destroy [concrete] // CHECK:STDOUT: %Destroy.facet.7aa: %Destroy.type = facet_value %tuple.type.56e, (%custom_witness.df9cc1.8) [concrete] -// CHECK:STDOUT: %Iterate.impl_witness.a6e: = impl_witness imports.%Iterate.impl_witness_table.344, @R.as_type.as.Iterate.impl(%facet_value.88d) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.11b: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.88d) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.96c: %R.as_type.as.Iterate.impl.NewCursor.type.11b = struct_value () [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.b29: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.88d) [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.683: %R.as_type.as.Iterate.impl.Next.type.b29 = struct_value () [concrete] -// CHECK:STDOUT: %Iterate.facet.5cc: %Iterate.type = facet_value %MutableAndConstRange, (%Iterate.impl_witness.a6e) [concrete] -// CHECK:STDOUT: %facet_value.0ec: %Iterate_where.type.99d = facet_value %MutableAndConstRange, (%Iterate.impl_witness.a6e) [concrete] +// CHECK:STDOUT: %Iterate.impl_witness.b32: = impl_witness imports.%Iterate.impl_witness_table.ccd, @R.as_type.as.Iterate.impl(%facet_value.88d) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.type.b61: type = fn_type @R.as_type.as.Iterate.impl.NewCursor, @R.as_type.as.Iterate.impl(%facet_value.88d) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.b31: %R.as_type.as.Iterate.impl.NewCursor.type.b61 = struct_value () [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.type.1dc: type = fn_type @R.as_type.as.Iterate.impl.Next, @R.as_type.as.Iterate.impl(%facet_value.88d) [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.b70: %R.as_type.as.Iterate.impl.Next.type.1dc = struct_value () [concrete] +// CHECK:STDOUT: %Iterate.facet.2df: %Iterate.type = facet_value %MutableAndConstRange, (%Iterate.impl_witness.b32) [concrete] +// CHECK:STDOUT: %facet_value.139: %Iterate_where.type.f9d = facet_value %MutableAndConstRange, (%Iterate.impl_witness.b32) [concrete] // CHECK:STDOUT: %r.param_patt.8bb: %pattern_type.394 = value_param_pattern [concrete] // CHECK:STDOUT: %r.patt.ac4: %pattern_type.394 = at_binding_pattern r, %r.param_patt.8bb [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.875: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.5cc) [concrete] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type.b41: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.5cc) [concrete] -// CHECK:STDOUT: %.7e3: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.875, %Iterate.facet.5cc [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %R.as_type.as.Iterate.impl.NewCursor.96c, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.88d) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type.7c9: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.2df) [concrete] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type.248: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.2df) [concrete] +// CHECK:STDOUT: %.59c: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type.7c9, %Iterate.facet.2df [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.NewCursor.specific_fn: = specific_function %R.as_type.as.Iterate.impl.NewCursor.b31, @R.as_type.as.Iterate.impl.NewCursor(%facet_value.88d) [concrete] // CHECK:STDOUT: %ptr.484: type = ptr_type %tuple.type.56e [concrete] -// CHECK:STDOUT: %.fef: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.b41, %Iterate.facet.5cc [concrete] -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %R.as_type.as.Iterate.impl.Next.683, @R.as_type.as.Iterate.impl.Next(%facet_value.88d) [concrete] +// CHECK:STDOUT: %.641: type = fn_type_with_self_type %Iterate.WithSelf.Next.type.248, %Iterate.facet.2df [concrete] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.specific_fn: = specific_function %R.as_type.as.Iterate.impl.Next.b70, @R.as_type.as.Iterate.impl.Next(%facet_value.88d) [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] // CHECK:STDOUT: %complete_type.1b5: = complete_type_witness %tuple.type.56e [concrete] @@ -3862,12 +3862,12 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %Core.import_ref.bb6: @Optional.%Optional.HasValue.type (%Optional.HasValue.type.e9e) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.HasValue (constants.%Optional.HasValue.6cd)] // CHECK:STDOUT: %Core.import_ref.daba: @Optional.%Optional.Get.type (%Optional.Get.type.bb9) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @Optional.%Optional.Get (constants.%Optional.Get.fa1)] // CHECK:STDOUT: %Core.import_ref.0c6: type = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%DefaultOptionalStorage (constants.%DefaultOptionalStorage.d50)] -// CHECK:STDOUT: %Core.import_ref.f4f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.300) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.f54)] -// CHECK:STDOUT: %Core.import_ref.18f: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.800) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.e83)] -// CHECK:STDOUT: %Core.import_ref.c68: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.4bc) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.dc2)] -// CHECK:STDOUT: %Core.import_ref.a83: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.029) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.cb5)] -// CHECK:STDOUT: %Core.import_ref.aaa = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded -// CHECK:STDOUT: %OptionalStorage.impl_witness_table.655 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.f4f, %Core.import_ref.18f, %Core.import_ref.c68, %Core.import_ref.a83, %Core.import_ref.aaa), @T.as_type.as.OptionalStorage.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.6d6: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None.type (%T.as_type.as.OptionalStorage.impl.None.type.f62) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.None (constants.%T.as_type.as.OptionalStorage.impl.None.faf)] +// CHECK:STDOUT: %Core.import_ref.6f3: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some.type (%T.as_type.as.OptionalStorage.impl.Some.type.973) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Some (constants.%T.as_type.as.OptionalStorage.impl.Some.c3a)] +// CHECK:STDOUT: %Core.import_ref.af2: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has.type (%T.as_type.as.OptionalStorage.impl.Has.type.d76) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Has (constants.%T.as_type.as.OptionalStorage.impl.Has.aa4)] +// CHECK:STDOUT: %Core.import_ref.e31: @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get.type (%T.as_type.as.OptionalStorage.impl.Get.type.671) = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], loaded [symbolic = @T.as_type.as.OptionalStorage.impl.%T.as_type.as.OptionalStorage.impl.Get (constants.%T.as_type.as.OptionalStorage.impl.Get.a54)] +// CHECK:STDOUT: %Core.import_ref.cea = import_ref Core//prelude/iterate, inst{{[0-9A-F]+}} [indirect], unloaded +// CHECK:STDOUT: %OptionalStorage.impl_witness_table.199 = impl_witness_table (%Core.import_ref.0c6, %Core.import_ref.6d6, %Core.import_ref.6f3, %Core.import_ref.af2, %Core.import_ref.e31, %Core.import_ref.cea), @T.as_type.as.OptionalStorage.impl [concrete] // CHECK:STDOUT: %N: = namespace [concrete] { // CHECK:STDOUT: .ValueType = %ValueType.decl // CHECK:STDOUT: .MutableAndConstRange = %MutableAndConstRange.decl @@ -3881,9 +3881,9 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import_ref.301: %facet_type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%facet_value (constants.%facet_value.194)] // CHECK:STDOUT: %Core.import_ref.89f: %Destroy.type = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%Destroy.facet (constants.%Destroy.facet.593)] -// CHECK:STDOUT: %Core.import_ref.3e6: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.36f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.29b)] -// CHECK:STDOUT: %Core.import_ref.85d: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.1f7) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.0d6)] -// CHECK:STDOUT: %Iterate.impl_witness_table.344 = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.3e6, %Core.import_ref.85d), @R.as_type.as.Iterate.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.940: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor.type (%R.as_type.as.Iterate.impl.NewCursor.type.127) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.NewCursor (constants.%R.as_type.as.Iterate.impl.NewCursor.627)] +// CHECK:STDOUT: %Core.import_ref.fe7: @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next.type (%R.as_type.as.Iterate.impl.Next.type.d8f) = import_ref Core//prelude/iterate, loc{{\d+_\d+}}, loaded [symbolic = @R.as_type.as.Iterate.impl.%R.as_type.as.Iterate.impl.Next (constants.%R.as_type.as.Iterate.impl.Next.c6d)] +// CHECK:STDOUT: %Iterate.impl_witness_table.ccd = impl_witness_table (%Core.import_ref.301, %Core.import_ref.89f, %Core.import_ref.940, %Core.import_ref.fe7), @R.as_type.as.Iterate.impl [concrete] // CHECK:STDOUT: %operator_PlusEqual__carbon_thunk.decl: %operator_PlusEqual__carbon_thunk.type = fn_decl @operator_PlusEqual__carbon_thunk [concrete = constants.%operator_PlusEqual__carbon_thunk] { // CHECK:STDOUT: // CHECK:STDOUT: } { @@ -3892,83 +3892,83 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %MutableAndConstRange.decl: type = class_decl @MutableAndConstRange [concrete = constants.%MutableAndConstRange] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @TestIterate(%R.loc34_17.2: %Iterate_where.type.99d) { +// CHECK:STDOUT: generic fn @TestIterate(%R.loc34_17.2: %Iterate_where.type.f9d) { // CHECK:STDOUT: // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc34_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.8b4)] -// CHECK:STDOUT: %Iterate.facet.loc38_31.5: %Iterate.type = facet_value %R.as_type.loc34_74.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc38_31.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.217)] -// CHECK:STDOUT: %.loc38_31.20: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc38_31.5 [symbolic = %.loc38_31.20 (constants.%.a27)] -// CHECK:STDOUT: %impl.elem2.loc38_31.2: @TestIterate.%.loc38_31.20 (%.a27) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc38_31.2 (constants.%impl.elem2.7c0)] -// CHECK:STDOUT: %specific_impl_fn.loc38_31.4: = specific_impl_function %impl.elem2.loc38_31.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc38_31.5) [symbolic = %specific_impl_fn.loc38_31.4 (constants.%specific_impl_fn.e23)] +// CHECK:STDOUT: %Iterate.lookup_impl_witness: = lookup_impl_witness %R.loc34_17.1, @Iterate [symbolic = %Iterate.lookup_impl_witness (constants.%Iterate.lookup_impl_witness.173)] +// CHECK:STDOUT: %Iterate.facet.loc38_31.5: %Iterate.type = facet_value %R.as_type.loc34_74.1, (%Iterate.lookup_impl_witness) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type: type = fn_type @Iterate.WithSelf.NewCursor, @Iterate.WithSelf(%Iterate.facet.loc38_31.5) [symbolic = %Iterate.WithSelf.NewCursor.type (constants.%Iterate.WithSelf.NewCursor.type.5cd)] +// CHECK:STDOUT: %.loc38_31.20: type = fn_type_with_self_type %Iterate.WithSelf.NewCursor.type, %Iterate.facet.loc38_31.5 [symbolic = %.loc38_31.20 (constants.%.592)] +// CHECK:STDOUT: %impl.elem2.loc38_31.2: @TestIterate.%.loc38_31.20 (%.592) = impl_witness_access %Iterate.lookup_impl_witness, element2 [symbolic = %impl.elem2.loc38_31.2 (constants.%impl.elem2.ae2)] +// CHECK:STDOUT: %specific_impl_fn.loc38_31.4: = specific_impl_function %impl.elem2.loc38_31.2, @Iterate.WithSelf.NewCursor(%Iterate.facet.loc38_31.5) [symbolic = %specific_impl_fn.loc38_31.4 (constants.%specific_impl_fn.06e)] // CHECK:STDOUT: -// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.530)] -// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc38_31.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.10a)] -// CHECK:STDOUT: %.loc38_31.21: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc38_31.5 [symbolic = %.loc38_31.21 (constants.%.df57)] -// CHECK:STDOUT: %impl.elem3.loc38_31.2: @TestIterate.%.loc38_31.21 (%.df57) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc38_31.2 (constants.%impl.elem3.199)] -// CHECK:STDOUT: %specific_impl_fn.loc38_31.5: = specific_impl_function %impl.elem3.loc38_31.2, @Iterate.WithSelf.Next(%Iterate.facet.loc38_31.5) [symbolic = %specific_impl_fn.loc38_31.5 (constants.%specific_impl_fn.169)] -// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.e7e)] -// CHECK:STDOUT: %.loc38_31.22: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc38_31.22 (constants.%.bc1)] -// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.f37)] -// CHECK:STDOUT: %impl.elem0.loc38_31.2: @TestIterate.%.loc38_31.22 (%.bc1) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc38_31.2 (constants.%impl.elem0.c7c)] -// CHECK:STDOUT: %specific_impl_fn.loc38_31.6: = specific_impl_function %impl.elem0.loc38_31.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc38_31.6 (constants.%specific_impl_fn.cd3)] +// CHECK:STDOUT: %ptr: type = ptr_type %as_type [symbolic = %ptr (constants.%ptr.d27)] +// CHECK:STDOUT: %Iterate.WithSelf.Next.type: type = fn_type @Iterate.WithSelf.Next, @Iterate.WithSelf(%Iterate.facet.loc38_31.5) [symbolic = %Iterate.WithSelf.Next.type (constants.%Iterate.WithSelf.Next.type.d51)] +// CHECK:STDOUT: %.loc38_31.21: type = fn_type_with_self_type %Iterate.WithSelf.Next.type, %Iterate.facet.loc38_31.5 [symbolic = %.loc38_31.21 (constants.%.524)] +// CHECK:STDOUT: %impl.elem3.loc38_31.2: @TestIterate.%.loc38_31.21 (%.524) = impl_witness_access %Iterate.lookup_impl_witness, element3 [symbolic = %impl.elem3.loc38_31.2 (constants.%impl.elem3.7a5)] +// CHECK:STDOUT: %specific_impl_fn.loc38_31.5: = specific_impl_function %impl.elem3.loc38_31.2, @Iterate.WithSelf.Next(%Iterate.facet.loc38_31.5) [symbolic = %specific_impl_fn.loc38_31.5 (constants.%specific_impl_fn.24b)] +// CHECK:STDOUT: %Destroy.WithSelf.Op.type: type = fn_type @Destroy.WithSelf.Op, @Destroy.WithSelf(%impl.elem1) [symbolic = %Destroy.WithSelf.Op.type (constants.%Destroy.WithSelf.Op.type.9d6)] +// CHECK:STDOUT: %.loc38_31.22: type = fn_type_with_self_type %Destroy.WithSelf.Op.type, %impl.elem1 [symbolic = %.loc38_31.22 (constants.%.57c)] +// CHECK:STDOUT: %Destroy.lookup_impl_witness: = lookup_impl_witness %impl.elem1, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness.198)] +// CHECK:STDOUT: %impl.elem0.loc38_31.2: @TestIterate.%.loc38_31.22 (%.57c) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc38_31.2 (constants.%impl.elem0.152)] +// CHECK:STDOUT: %specific_impl_fn.loc38_31.6: = specific_impl_function %impl.elem0.loc38_31.2, @Destroy.WithSelf.Op(%impl.elem1) [symbolic = %specific_impl_fn.loc38_31.6 (constants.%specific_impl_fn.9fb)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc34_74.1 (%R.as_type.a62)) { +// CHECK:STDOUT: fn(%r.param: @TestIterate.%R.as_type.loc34_74.1 (%R.as_type.c37)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %i.patt: %pattern_type.e41 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } -// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc34_74.1 (%R.as_type.a62) = name_ref r, %r -// CHECK:STDOUT: %impl.elem2.loc38_31.1: @TestIterate.%.loc38_31.20 (%.a27) = impl_witness_access constants.%Iterate.lookup_impl_witness.8b4, element2 [symbolic = %impl.elem2.loc38_31.2 (constants.%impl.elem2.7c0)] +// CHECK:STDOUT: %r.ref: @TestIterate.%R.as_type.loc34_74.1 (%R.as_type.c37) = name_ref r, %r +// CHECK:STDOUT: %impl.elem2.loc38_31.1: @TestIterate.%.loc38_31.20 (%.592) = impl_witness_access constants.%Iterate.lookup_impl_witness.173, element2 [symbolic = %impl.elem2.loc38_31.2 (constants.%impl.elem2.ae2)] // CHECK:STDOUT: %bound_method.loc38_31.1: = bound_method %r.ref, %impl.elem2.loc38_31.1 -// CHECK:STDOUT: %Iterate.facet.loc38_31.1: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc38_31.1: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc38_31.1 [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %Iterate.facet.loc38_31.2: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc38_31.2: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc38_31.2 [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %specific_impl_fn.loc38_31.1: = specific_impl_function %impl.elem2.loc38_31.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.b19) [symbolic = %specific_impl_fn.loc38_31.4 (constants.%specific_impl_fn.e23)] +// CHECK:STDOUT: %Iterate.facet.loc38_31.1: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc38_31.1: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc38_31.1 [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %Iterate.facet.loc38_31.2: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc38_31.2: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc38_31.2 [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %specific_impl_fn.loc38_31.1: = specific_impl_function %impl.elem2.loc38_31.1, @Iterate.WithSelf.NewCursor(constants.%Iterate.facet.b38) [symbolic = %specific_impl_fn.loc38_31.4 (constants.%specific_impl_fn.06e)] // CHECK:STDOUT: %bound_method.loc38_31.2: = bound_method %r.ref, %specific_impl_fn.loc38_31.1 -// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.862) = var_storage invalid -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.862) to %var = call %bound_method.loc38_31.2(%r.ref) +// CHECK:STDOUT: %var: ref @TestIterate.%as_type (%as_type.e41) = var_storage invalid +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.call: init @TestIterate.%as_type (%as_type.e41) to %var = call %bound_method.loc38_31.2(%r.ref) // CHECK:STDOUT: assign %var, %Iterate.WithSelf.NewCursor.call // CHECK:STDOUT: br !for.next // CHECK:STDOUT: // CHECK:STDOUT: !for.next: -// CHECK:STDOUT: %addr.loc38: @TestIterate.%ptr (%ptr.530) = addr_of %var -// CHECK:STDOUT: %impl.elem3.loc38_31.1: @TestIterate.%.loc38_31.21 (%.df57) = impl_witness_access constants.%Iterate.lookup_impl_witness.8b4, element3 [symbolic = %impl.elem3.loc38_31.2 (constants.%impl.elem3.199)] +// CHECK:STDOUT: %addr.loc38: @TestIterate.%ptr (%ptr.d27) = addr_of %var +// CHECK:STDOUT: %impl.elem3.loc38_31.1: @TestIterate.%.loc38_31.21 (%.524) = impl_witness_access constants.%Iterate.lookup_impl_witness.173, element3 [symbolic = %impl.elem3.loc38_31.2 (constants.%impl.elem3.7a5)] // CHECK:STDOUT: %bound_method.loc38_31.3: = bound_method %r.ref, %impl.elem3.loc38_31.1 -// CHECK:STDOUT: %Iterate.facet.loc38_31.3: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc38_31.3: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc38_31.3 [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %Iterate.facet.loc38_31.4: %Iterate.type = facet_value constants.%R.as_type.a62, (constants.%Iterate.lookup_impl_witness.8b4) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc38_31.4: %Iterate.type = converted constants.%R.as_type.a62, %Iterate.facet.loc38_31.4 [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b19)] -// CHECK:STDOUT: %.loc38_31.5: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %.loc38_31.6: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %specific_impl_fn.loc38_31.2: = specific_impl_function %impl.elem3.loc38_31.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.b19) [symbolic = %specific_impl_fn.loc38_31.5 (constants.%specific_impl_fn.169)] +// CHECK:STDOUT: %Iterate.facet.loc38_31.3: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc38_31.3: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc38_31.3 [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %Iterate.facet.loc38_31.4: %Iterate.type = facet_value constants.%R.as_type.c37, (constants.%Iterate.lookup_impl_witness.173) [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc38_31.4: %Iterate.type = converted constants.%R.as_type.c37, %Iterate.facet.loc38_31.4 [symbolic = %Iterate.facet.loc38_31.5 (constants.%Iterate.facet.b38)] +// CHECK:STDOUT: %.loc38_31.5: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %.loc38_31.6: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %specific_impl_fn.loc38_31.2: = specific_impl_function %impl.elem3.loc38_31.1, @Iterate.WithSelf.Next(constants.%Iterate.facet.b38) [symbolic = %specific_impl_fn.loc38_31.5 (constants.%specific_impl_fn.24b)] // CHECK:STDOUT: %bound_method.loc38_31.4: = bound_method %r.ref, %specific_impl_fn.loc38_31.2 -// CHECK:STDOUT: %.loc38_31.7: ref %Optional.552 = temporary_storage -// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.552 to %.loc38_31.7 = call %bound_method.loc38_31.4(%r.ref, %addr.loc38) -// CHECK:STDOUT: %.loc38_31.8: ref %Optional.552 = temporary %.loc38_31.7, %Iterate.WithSelf.Next.call -// CHECK:STDOUT: %.loc38_31.9: %Optional.HasValue.type.109 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.HasValue.605] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.109 = name_ref HasValue, %.loc38_31.9 [concrete = constants.%Optional.HasValue.605] +// CHECK:STDOUT: %.loc38_31.7: ref %Optional.c14 = temporary_storage +// CHECK:STDOUT: %Iterate.WithSelf.Next.call: init %Optional.c14 to %.loc38_31.7 = call %bound_method.loc38_31.4(%r.ref, %addr.loc38) +// CHECK:STDOUT: %.loc38_31.8: ref %Optional.c14 = temporary %.loc38_31.7, %Iterate.WithSelf.Next.call +// CHECK:STDOUT: %.loc38_31.9: %Optional.HasValue.type.36e = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.HasValue.3c0] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.36e = name_ref HasValue, %.loc38_31.9 [concrete = constants.%Optional.HasValue.3c0] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc38_31.8, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc38_31.5: = bound_method %.loc38_31.8, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc38_31.10: %Optional.552 = acquire_value %.loc38_31.8 +// CHECK:STDOUT: %.loc38_31.10: %Optional.c14 = acquire_value %.loc38_31.8 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc38_31.5(%.loc38_31.10) // CHECK:STDOUT: %.loc38_31.11: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc38_31.12: bool = converted %Optional.HasValue.call, %.loc38_31.11 // CHECK:STDOUT: if %.loc38_31.12 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc38_31.13: %Optional.Get.type.135 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.Get.5aa] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.135 = name_ref Get, %.loc38_31.13 [concrete = constants.%Optional.Get.5aa] +// CHECK:STDOUT: %.loc38_31.13: %Optional.Get.type.862 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.Get.28e] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.862 = name_ref Get, %.loc38_31.13 [concrete = constants.%Optional.Get.28e] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc38_31.8, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc38_31.6: = bound_method %.loc38_31.8, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc38_31.14: ref %ValueType = temporary_storage -// CHECK:STDOUT: %.loc38_31.15: %Optional.552 = acquire_value %.loc38_31.8 +// CHECK:STDOUT: %.loc38_31.15: %Optional.c14 = acquire_value %.loc38_31.8 // CHECK:STDOUT: %Optional.Get.call: init %ValueType to %.loc38_31.14 = call %bound_method.loc38_31.6(%.loc38_31.15) // CHECK:STDOUT: %.loc38_31.16: ref %ValueType = temporary %.loc38_31.14, %Optional.Get.call // CHECK:STDOUT: %.loc38_31.17: %ValueType = acquire_value %.loc38_31.16 @@ -3994,11 +3994,11 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %ValueType.cpp_destructor.call.loc38: init %empty_tuple.type = call %ValueType.cpp_destructor.bound.loc38(%.loc38_31.16) // CHECK:STDOUT: %Destroy.Op.bound: = bound_method %.loc38_31.8, constants.%Destroy.Op.1a2547.7 // CHECK:STDOUT: %Destroy.Op.call: init %empty_tuple.type = call %Destroy.Op.bound(%.loc38_31.8) -// CHECK:STDOUT: %impl.elem0.loc38_31.1: @TestIterate.%.loc38_31.22 (%.bc1) = impl_witness_access constants.%Destroy.lookup_impl_witness.f37, element0 [symbolic = %impl.elem0.loc38_31.2 (constants.%impl.elem0.c7c)] +// CHECK:STDOUT: %impl.elem0.loc38_31.1: @TestIterate.%.loc38_31.22 (%.57c) = impl_witness_access constants.%Destroy.lookup_impl_witness.198, element0 [symbolic = %impl.elem0.loc38_31.2 (constants.%impl.elem0.152)] // CHECK:STDOUT: %bound_method.loc38_31.7: = bound_method %var, %impl.elem0.loc38_31.1 -// CHECK:STDOUT: %.loc38_31.18: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %.loc38_31.19: %Destroy.type = converted constants.%as_type.862, constants.%impl.elem1.46a [symbolic = %impl.elem1 (constants.%impl.elem1.46a)] -// CHECK:STDOUT: %specific_impl_fn.loc38_31.3: = specific_impl_function %impl.elem0.loc38_31.1, @Destroy.WithSelf.Op(constants.%impl.elem1.46a) [symbolic = %specific_impl_fn.loc38_31.6 (constants.%specific_impl_fn.cd3)] +// CHECK:STDOUT: %.loc38_31.18: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %.loc38_31.19: %Destroy.type = converted constants.%as_type.e41, constants.%impl.elem1.834 [symbolic = %impl.elem1 (constants.%impl.elem1.834)] +// CHECK:STDOUT: %specific_impl_fn.loc38_31.3: = specific_impl_function %impl.elem0.loc38_31.1, @Destroy.WithSelf.Op(constants.%impl.elem1.834) [symbolic = %specific_impl_fn.loc38_31.6 (constants.%specific_impl_fn.9fb)] // CHECK:STDOUT: %bound_method.loc38_31.8: = bound_method %var, %specific_impl_fn.loc38_31.3 // CHECK:STDOUT: %Destroy.WithSelf.Op.call: init %empty_tuple.type = call %bound_method.loc38_31.8(%var) // CHECK:STDOUT: @@ -4037,7 +4037,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Destroy.Op.loc38_31.6(%self.param: ref %Optional.552) { +// CHECK:STDOUT: fn @Destroy.Op.loc38_31.6(%self.param: ref %Optional.c14) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -4051,7 +4051,7 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %i.patt: %pattern_type.e41 = value_binding_pattern i [concrete = constants.%i.patt] // CHECK:STDOUT: } // CHECK:STDOUT: %mc.ref: ref %MutableAndConstRange = name_ref mc, %mc -// CHECK:STDOUT: %impl.elem2: %.7e3 = impl_witness_access constants.%Iterate.impl_witness.a6e, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.96c] +// CHECK:STDOUT: %impl.elem2: %.59c = impl_witness_access constants.%Iterate.impl_witness.b32, element2 [concrete = constants.%R.as_type.as.Iterate.impl.NewCursor.b31] // CHECK:STDOUT: %bound_method.loc80_32.1: = bound_method %mc.ref, %impl.elem2 // CHECK:STDOUT: %facet_value.loc80_32.1: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableAndConstRange, (constants.%custom_witness.fef, constants.%custom_witness.c19, constants.%custom_witness.a40, constants.%custom_witness.04a, constants.%custom_witness.cfc, constants.%custom_witness.dd5, constants.%custom_witness.c66, constants.%custom_witness.01a) [concrete = constants.%facet_value.88d] // CHECK:STDOUT: %.loc80_32.1: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableAndConstRange, %facet_value.loc80_32.1 [concrete = constants.%facet_value.88d] @@ -4067,7 +4067,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: %.fef = impl_witness_access constants.%Iterate.impl_witness.a6e, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.683] +// CHECK:STDOUT: %impl.elem3: %.641 = impl_witness_access constants.%Iterate.impl_witness.b32, element3 [concrete = constants.%R.as_type.as.Iterate.impl.Next.b70] // CHECK:STDOUT: %bound_method.loc80_32.3: = bound_method %mc.ref, %impl.elem3 // CHECK:STDOUT: %facet_value.loc80_32.3: %CppRangeForIterate_where.type.1c721f.1 = facet_value constants.%MutableAndConstRange, (constants.%custom_witness.fef, constants.%custom_witness.c19, constants.%custom_witness.a40, constants.%custom_witness.04a, constants.%custom_witness.cfc, constants.%custom_witness.dd5, constants.%custom_witness.c66, constants.%custom_witness.01a) [concrete = constants.%facet_value.88d] // CHECK:STDOUT: %.loc80_32.3: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableAndConstRange, %facet_value.loc80_32.3 [concrete = constants.%facet_value.88d] @@ -4075,29 +4075,29 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: %.loc80_32.4: %CppRangeForIterate_where.type.1c721f.1 = converted constants.%MutableAndConstRange, %facet_value.loc80_32.4 [concrete = constants.%facet_value.88d] // CHECK:STDOUT: %specific_fn.loc80_32.2: = specific_function %impl.elem3, @R.as_type.as.Iterate.impl.Next(constants.%facet_value.88d) [concrete = constants.%R.as_type.as.Iterate.impl.Next.specific_fn] // CHECK:STDOUT: %bound_method.loc80_32.4: = bound_method %mc.ref, %specific_fn.loc80_32.2 -// CHECK:STDOUT: %.loc80_32.5: ref %Optional.552 = temporary_storage +// CHECK:STDOUT: %.loc80_32.5: ref %Optional.c14 = temporary_storage // CHECK:STDOUT: %.loc80_30.2: %MutableAndConstRange = acquire_value %mc.ref -// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call: init %Optional.552 to %.loc80_32.5 = call %bound_method.loc80_32.4(%.loc80_30.2, %addr.loc80) -// CHECK:STDOUT: %.loc80_32.6: ref %Optional.552 = temporary %.loc80_32.5, %R.as_type.as.Iterate.impl.Next.call -// CHECK:STDOUT: %.loc80_32.7: %Optional.HasValue.type.109 = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.HasValue.605] -// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.109 = name_ref HasValue, %.loc80_32.7 [concrete = constants.%Optional.HasValue.605] +// CHECK:STDOUT: %R.as_type.as.Iterate.impl.Next.call: init %Optional.c14 to %.loc80_32.5 = call %bound_method.loc80_32.4(%.loc80_30.2, %addr.loc80) +// CHECK:STDOUT: %.loc80_32.6: ref %Optional.c14 = temporary %.loc80_32.5, %R.as_type.as.Iterate.impl.Next.call +// CHECK:STDOUT: %.loc80_32.7: %Optional.HasValue.type.36e = specific_constant imports.%Core.import_ref.bb6, @Optional(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.HasValue.3c0] +// CHECK:STDOUT: %HasValue.ref: %Optional.HasValue.type.36e = name_ref HasValue, %.loc80_32.7 [concrete = constants.%Optional.HasValue.3c0] // CHECK:STDOUT: %Optional.HasValue.bound: = bound_method %.loc80_32.6, %HasValue.ref -// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.HasValue.specific_fn] +// CHECK:STDOUT: %Optional.HasValue.specific_fn: = specific_function %HasValue.ref, @Optional.HasValue(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.HasValue.specific_fn] // CHECK:STDOUT: %bound_method.loc80_32.5: = bound_method %.loc80_32.6, %Optional.HasValue.specific_fn -// CHECK:STDOUT: %.loc80_32.8: %Optional.552 = acquire_value %.loc80_32.6 +// CHECK:STDOUT: %.loc80_32.8: %Optional.c14 = acquire_value %.loc80_32.6 // CHECK:STDOUT: %Optional.HasValue.call: init bool = call %bound_method.loc80_32.5(%.loc80_32.8) // CHECK:STDOUT: %.loc80_32.9: bool = value_of_initializer %Optional.HasValue.call // CHECK:STDOUT: %.loc80_32.10: bool = converted %Optional.HasValue.call, %.loc80_32.9 // CHECK:STDOUT: if %.loc80_32.10 br !for.body else br !for.done // CHECK:STDOUT: // CHECK:STDOUT: !for.body: -// CHECK:STDOUT: %.loc80_32.11: %Optional.Get.type.135 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.Get.5aa] -// CHECK:STDOUT: %Get.ref: %Optional.Get.type.135 = name_ref Get, %.loc80_32.11 [concrete = constants.%Optional.Get.5aa] +// CHECK:STDOUT: %.loc80_32.11: %Optional.Get.type.862 = specific_constant imports.%Core.import_ref.daba, @Optional(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.Get.28e] +// CHECK:STDOUT: %Get.ref: %Optional.Get.type.862 = name_ref Get, %.loc80_32.11 [concrete = constants.%Optional.Get.28e] // CHECK:STDOUT: %Optional.Get.bound: = bound_method %.loc80_32.6, %Get.ref -// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.7ce) [concrete = constants.%Optional.Get.specific_fn] +// CHECK:STDOUT: %Optional.Get.specific_fn: = specific_function %Get.ref, @Optional.Get(constants.%OptionalStorage.facet.cac) [concrete = constants.%Optional.Get.specific_fn] // CHECK:STDOUT: %bound_method.loc80_32.6: = bound_method %.loc80_32.6, %Optional.Get.specific_fn // CHECK:STDOUT: %.loc80_32.12: ref %ValueType = temporary_storage -// CHECK:STDOUT: %.loc80_32.13: %Optional.552 = acquire_value %.loc80_32.6 +// CHECK:STDOUT: %.loc80_32.13: %Optional.c14 = acquire_value %.loc80_32.6 // CHECK:STDOUT: %Optional.Get.call: init %ValueType to %.loc80_32.12 = call %bound_method.loc80_32.6(%.loc80_32.13) // CHECK:STDOUT: %.loc80_32.14: ref %ValueType = temporary %.loc80_32.12, %Optional.Get.call // CHECK:STDOUT: %.loc80_32.15: %ValueType = acquire_value %.loc80_32.14 @@ -4130,18 +4130,18 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: !observes: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%R.623) { -// CHECK:STDOUT: %R.patt.loc34_17.2 => constants.%R.patt.324 -// CHECK:STDOUT: %R.loc34_17.1 => constants.%R.623 -// CHECK:STDOUT: %R.as_type.loc34_74.1 => constants.%R.as_type.a62 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.725 -// CHECK:STDOUT: %r.param_patt.loc34_72.2 => constants.%r.param_patt.162 -// CHECK:STDOUT: %r.patt.loc34_72.2 => constants.%r.patt.15b +// CHECK:STDOUT: specific @TestIterate(constants.%R.db4) { +// CHECK:STDOUT: %R.patt.loc34_17.2 => constants.%R.patt.81e +// CHECK:STDOUT: %R.loc34_17.1 => constants.%R.db4 +// CHECK:STDOUT: %R.as_type.loc34_74.1 => constants.%R.as_type.c37 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.17d +// CHECK:STDOUT: %r.param_patt.loc34_72.2 => constants.%r.param_patt.90c +// CHECK:STDOUT: %r.patt.loc34_72.2 => constants.%r.patt.d6c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.0ec) { -// CHECK:STDOUT: %R.patt.loc34_17.2 => constants.%R.patt.324 -// CHECK:STDOUT: %R.loc34_17.1 => constants.%facet_value.0ec +// CHECK:STDOUT: specific @TestIterate(constants.%facet_value.139) { +// CHECK:STDOUT: %R.patt.loc34_17.2 => constants.%R.patt.81e +// CHECK:STDOUT: %R.loc34_17.1 => constants.%facet_value.139 // CHECK:STDOUT: %R.as_type.loc34_74.1 => constants.%MutableAndConstRange // CHECK:STDOUT: %pattern_type => constants.%pattern_type.394 // CHECK:STDOUT: %r.param_patt.loc34_72.2 => constants.%r.param_patt.8bb @@ -4149,19 +4149,19 @@ fn TestDriver(var no_begin_end: Cpp.NoBeginEnd, // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc34 => constants.%complete_type.357 -// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.a6e -// CHECK:STDOUT: %Iterate.facet.loc38_31.5 => constants.%Iterate.facet.5cc -// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.875 -// CHECK:STDOUT: %.loc38_31.20 => constants.%.7e3 -// CHECK:STDOUT: %impl.elem2.loc38_31.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.96c +// CHECK:STDOUT: %Iterate.lookup_impl_witness => constants.%Iterate.impl_witness.b32 +// CHECK:STDOUT: %Iterate.facet.loc38_31.5 => constants.%Iterate.facet.2df +// CHECK:STDOUT: %Iterate.WithSelf.NewCursor.type => constants.%Iterate.WithSelf.NewCursor.type.7c9 +// CHECK:STDOUT: %.loc38_31.20 => constants.%.59c +// CHECK:STDOUT: %impl.elem2.loc38_31.2 => constants.%R.as_type.as.Iterate.impl.NewCursor.b31 // CHECK:STDOUT: %specific_impl_fn.loc38_31.4 => constants.%R.as_type.as.Iterate.impl.NewCursor.specific_fn // CHECK:STDOUT: %impl.elem1 => constants.%Destroy.facet.7aa // CHECK:STDOUT: %as_type => constants.%tuple.type.56e // 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.b41 -// CHECK:STDOUT: %.loc38_31.21 => constants.%.fef -// CHECK:STDOUT: %impl.elem3.loc38_31.2 => constants.%R.as_type.as.Iterate.impl.Next.683 +// CHECK:STDOUT: %Iterate.WithSelf.Next.type => constants.%Iterate.WithSelf.Next.type.248 +// CHECK:STDOUT: %.loc38_31.21 => constants.%.641 +// CHECK:STDOUT: %impl.elem3.loc38_31.2 => constants.%R.as_type.as.Iterate.impl.Next.b70 // CHECK:STDOUT: %specific_impl_fn.loc38_31.5 => constants.%R.as_type.as.Iterate.impl.Next.specific_fn // CHECK:STDOUT: %Destroy.WithSelf.Op.type => constants.%Destroy.WithSelf.Op.type.b7b // CHECK:STDOUT: %.loc38_31.22 => constants.%.1ad diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index 2ad2353be926..d82a39ff015b 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -185,7 +185,7 @@ impl i32 as Empty { // CHECK:STDOUT: %C.F.type: type = fn_type @C.F [concrete] // CHECK:STDOUT: %C.F: %C.F.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %x.patt: %pattern_type = value_binding_pattern x [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -222,7 +222,7 @@ impl i32 as Empty { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_17.2: %empty_tuple.type = converted %.loc10_17.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_12.1: type = splice_block %.loc10_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc10_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_12.3: type = converted %.loc10_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } @@ -254,7 +254,7 @@ impl i32 as Empty { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete] @@ -289,7 +289,7 @@ impl i32 as Empty { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_17.2: %empty_tuple.type = converted %.loc9_17.1, %empty_tuple [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.1: type = splice_block %.loc9_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.3: type = converted %.loc9_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } @@ -331,7 +331,7 @@ impl i32 as Empty { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete] @@ -356,7 +356,7 @@ impl i32 as Empty { // CHECK:STDOUT: %empty_tuple.loc9: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_17.2: %empty_tuple.type = converted %.loc9_17.1, %empty_tuple.loc9 [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.1: type = splice_block %.loc9_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.Self.loc9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_12.2: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_12.3: type = converted %.loc9_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } @@ -368,7 +368,7 @@ impl i32 as Empty { // CHECK:STDOUT: %b.patt.loc10_9.1: %pattern_type.559 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc10_9.2 (constants.%b.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_16.1: type = splice_block %.loc10_16.4 [concrete = constants.%tuple.type.9fb] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc10_14: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_16.2: %tuple.type.9fb = tuple_literal (%.loc10_14) [concrete = constants.%tuple.f41] // CHECK:STDOUT: %.loc10_16.3: type = converted constants.%empty_tuple, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] @@ -389,7 +389,7 @@ impl i32 as Empty { // CHECK:STDOUT: %tuple: %tuple.type.2d5 = tuple_value (%.loc26_37.2, %.loc26_37.3, %.loc26_37.4) [concrete = constants.%tuple.7e4] // CHECK:STDOUT: %.loc26_37.5: %tuple.type.2d5 = converted %.loc26_37.1, %tuple [concrete = constants.%tuple.7e4] // CHECK:STDOUT: %.loc26_22.1: type = splice_block %.loc26_22.6 [concrete = constants.%tuple.type.2d5] { -// CHECK:STDOUT: %.Self.loc26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc26_13: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_17: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc26_21: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] @@ -610,7 +610,7 @@ impl i32 as Empty { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I: type = class_type @I [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = value_binding_pattern T [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] @@ -644,7 +644,7 @@ impl i32 as Empty { // CHECK:STDOUT: class @I { // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: %.loc9_11.1: type = splice_block %.loc9_11.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_11.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T: type = wrapper_binding T, %i32 @@ -672,7 +672,7 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = value_binding_pattern T [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] @@ -700,7 +700,7 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %.loc8_9.1: type = splice_block %.loc8_9.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_9.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T: type = wrapper_binding T, @__global_init.%i32 @@ -736,7 +736,7 @@ impl i32 as Empty { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [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: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.6b6: type = pattern_type %i32 [concrete] // CHECK:STDOUT: %Zero.patt: %pattern_type.6b6 = value_binding_pattern Zero [concrete] // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] @@ -808,7 +808,7 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc11_20.1: %i32 = value_of_initializer %Core.IntLiteral.as.ImplicitAs.impl.Convert.call [concrete = constants.%int_0.3c0] // CHECK:STDOUT: %.loc11_20.2: %i32 = converted %int_0, %.loc11_20.1 [concrete = constants.%int_0.3c0] // CHECK:STDOUT: %.loc11_14: type = splice_block %i32.loc11 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32.loc11: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %Zero: %i32 = wrapper_binding Zero, %.loc11_20.2 diff --git a/toolchain/check/testdata/let/fail_generic_import.carbon b/toolchain/check/testdata/let/fail_generic_import.carbon index db4f676887a9..fb839df9f0ca 100644 --- a/toolchain/check/testdata/let/fail_generic_import.carbon +++ b/toolchain/check/testdata/let/fail_generic_import.carbon @@ -37,7 +37,7 @@ let a: T = 0; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = value_binding_pattern T [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] @@ -62,7 +62,7 @@ let a: T = 0; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %.loc8_9.1: type = splice_block %.loc8_9.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_9.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T: type = wrapper_binding T, @__global_init.%i32 diff --git a/toolchain/check/testdata/let/generic_import.carbon b/toolchain/check/testdata/let/generic_import.carbon index 636cfde7d20d..5f7948f93a41 100644 --- a/toolchain/check/testdata/let/generic_import.carbon +++ b/toolchain/check/testdata/let/generic_import.carbon @@ -41,7 +41,7 @@ var b: T = *a; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.98f = value_binding_pattern T [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] @@ -66,7 +66,7 @@ var b: T = *a; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %.loc8_9.1: type = splice_block %.loc8_9.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_9.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T: type = wrapper_binding T, @__global_init.%i32 diff --git a/toolchain/check/testdata/named_constraint/convert.carbon b/toolchain/check/testdata/named_constraint/convert.carbon index 433f5041a85a..7da248d2e528 100644 --- a/toolchain/check/testdata/named_constraint/convert.carbon +++ b/toolchain/check/testdata/named_constraint/convert.carbon @@ -64,7 +64,7 @@ fn G(T:! Z) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %E.type: type = facet_type <@E> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.9a5: type = pattern_type %E.type [concrete] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] @@ -94,7 +94,7 @@ fn G(T:! Z) { // CHECK:STDOUT: %T.patt.loc8_7.1: %pattern_type.9a5 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_7.2 (constants.%T.patt.3a0592.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_12.1: type = splice_block %.loc8_12.3 [concrete = constants.%E.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %E.ref.loc8_10: type = name_ref E, file.%E.decl [concrete = constants.%E.type] // CHECK:STDOUT: %E.ref.loc8_14: type = name_ref E, file.%E.decl [concrete = constants.%E.type] // CHECK:STDOUT: %impl.elem0: %.d56 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op] @@ -137,7 +137,7 @@ fn G(T:! Z) { // CHECK:STDOUT: %E1.type: type = facet_type <@E1> [concrete] // CHECK:STDOUT: %E2.type: type = facet_type <@E2> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] @@ -156,7 +156,7 @@ fn G(T:! Z) { // CHECK:STDOUT: %T.patt.loc9_7.1: %pattern_type.9a587c.2 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_7.2 (constants.%T.patt.3a0592.2)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9: type = splice_block %E2.ref [concrete = constants.%E2.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %E2.ref: type = name_ref E2, file.%E2.decl [concrete = constants.%E2.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_7.2: %E2.type = symbolic_binding T, 0 [symbolic = %T.loc9_7.1 (constants.%T.f45530.2)] diff --git a/toolchain/check/testdata/named_constraint/empty.carbon b/toolchain/check/testdata/named_constraint/empty.carbon index 042dd16b1bb9..4bfdee9a2796 100644 --- a/toolchain/check/testdata/named_constraint/empty.carbon +++ b/toolchain/check/testdata/named_constraint/empty.carbon @@ -36,7 +36,7 @@ fn G(T:! Z, U:! type, V:! Empty) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.9a5: type = pattern_type %Empty.type [concrete] // CHECK:STDOUT: %T.patt.3a0: %pattern_type.9a5 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.f45: %Empty.type = symbolic_binding T, 0 [symbolic] @@ -73,7 +73,7 @@ fn G(T:! Z, U:! type, V:! Empty) { // CHECK:STDOUT: %T.patt.loc19_14.1: %pattern_type.9a5 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_14.2 (constants.%T.patt.3a0)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc19: type = splice_block %Empty.ref [concrete = constants.%Empty.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc19_14.2: %Empty.type = symbolic_binding T, 0 [symbolic = %T.loc19_14.1 (constants.%T.f45)] @@ -84,17 +84,17 @@ fn G(T:! Z, U:! type, V:! Empty) { // CHECK:STDOUT: %V.patt.loc25_24.1: %pattern_type.9a5 = symbolic_binding_pattern V, 2 [symbolic = %V.patt.loc25_24.2 (constants.%V.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc25_10: type = splice_block %Z.ref [concrete = constants.%Z.type] { -// CHECK:STDOUT: %.Self.loc25_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc25_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc25_7.2: %Z.type = symbolic_binding T, 0 [symbolic = %T.loc25_7.1 (constants.%T.013)] // CHECK:STDOUT: %.loc25_17.1: type = splice_block %.loc25_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc25_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc25_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc25_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc25_14.2: type = symbolic_binding U, 1 [symbolic = %U.loc25_14.1 (constants.%U)] // CHECK:STDOUT: %.loc25_27: type = splice_block %Empty.ref [concrete = constants.%Empty.type] { -// CHECK:STDOUT: %.Self.loc25_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc25_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc25_24.2: %Empty.type = symbolic_binding V, 2 [symbolic = %V.loc25_24.1 (constants.%V)] diff --git a/toolchain/check/testdata/named_constraint/empty_generic.carbon b/toolchain/check/testdata/named_constraint/empty_generic.carbon index ce45bd5375b0..c8a237d0ada1 100644 --- a/toolchain/check/testdata/named_constraint/empty_generic.carbon +++ b/toolchain/check/testdata/named_constraint/empty_generic.carbon @@ -31,7 +31,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt.d47: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.67d: type = symbolic_binding T, 0 [symbolic] @@ -80,7 +80,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: %T.patt.loc16_19.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_19.2 (constants.%T.patt.d47)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_22.1: type = splice_block %.loc16_22.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc16_22.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc16_19.2: type = symbolic_binding T, 0 [symbolic = %T.loc16_19.1 (constants.%T.67d)] @@ -90,12 +90,12 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: %U.patt.loc18_24.1: @F.%pattern_type (%pattern_type.9a587c.1) = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc18_24.2 (constants.%U.patt.cb839c.1)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc18_10.1: type = splice_block %.loc18_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc18_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc18_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc18_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc18_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc18_7.1 (constants.%T.67d)] // CHECK:STDOUT: %.loc18_34: type = splice_block %Empty.type.loc18_34.2 [symbolic = %Empty.type.loc18_34.1 (constants.%Empty.type.d682d6.1)] { -// CHECK:STDOUT: %.Self.loc18_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc18_24: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Empty.ref: %Empty.type.f30 = name_ref Empty, file.%Empty.decl [concrete = constants.%empty_struct.26b] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc18_7.2 [symbolic = %T.loc18_7.1 (constants.%T.67d)] // CHECK:STDOUT: %Empty.type.loc18_34.2: type = facet_type <@Empty, @Empty(constants.%T.67d)> [symbolic = %Empty.type.loc18_34.1 (constants.%Empty.type.d682d6.1)] @@ -108,12 +108,12 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: %V.patt.loc20_28.1: %pattern_type.98f = symbolic_binding_pattern V, 2 [symbolic = %V.patt.loc20_28.2 (constants.%V.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_10: type = splice_block %Z.ref [concrete = constants.%Z.type] { -// CHECK:STDOUT: %.Self.loc20_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc20_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc20_7.2: %Z.type = symbolic_binding T, 0 [symbolic = %T.loc20_7.1 (constants.%T.013)] // CHECK:STDOUT: %.loc20_24.1: type = splice_block %Empty.type.loc20_24.2 [symbolic = %Empty.type.loc20_24.1 (constants.%Empty.type.d682d6.2)] { -// CHECK:STDOUT: %.Self.loc20_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc20_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Empty.ref: %Empty.type.f30 = name_ref Empty, file.%Empty.decl [concrete = constants.%empty_struct.26b] // CHECK:STDOUT: %T.ref.loc20: %Z.type = name_ref T, %T.loc20_7.2 [symbolic = %T.loc20_7.1 (constants.%T.013)] // CHECK:STDOUT: %T.as_type.loc20_24.2: type = facet_access_type %T.ref.loc20 [symbolic = %T.as_type.loc20_24.1 (constants.%T.as_type)] @@ -122,7 +122,7 @@ fn G(T:! Z, U:! Empty(T), V:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc20_14.2: @G.%Empty.type.loc20_24.1 (%Empty.type.d682d6.2) = symbolic_binding U, 1 [symbolic = %U.loc20_14.1 (constants.%U.e1f642.2)] // CHECK:STDOUT: %.loc20_31.1: type = splice_block %.loc20_31.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc20_28: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc20_28: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc20_31.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc20_28.2: type = symbolic_binding V, 2 [symbolic = %V.loc20_28.1 (constants.%V)] diff --git a/toolchain/check/testdata/named_constraint/extend_name_lookup.carbon b/toolchain/check/testdata/named_constraint/extend_name_lookup.carbon index a40aff788565..4430fba67317 100644 --- a/toolchain/check/testdata/named_constraint/extend_name_lookup.carbon +++ b/toolchain/check/testdata/named_constraint/extend_name_lookup.carbon @@ -107,7 +107,7 @@ fn F(T:! type where .Self impls W) { // CHECK:STDOUT: %assoc0.359: %Y.assoc_type = assoc_entity element0, @Y.WithSelf.%Y.WithSelf.YF.decl [concrete] // CHECK:STDOUT: %W.type: type = facet_type <@W> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %W.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %W.type = symbolic_binding T, 0 [symbolic] @@ -133,7 +133,7 @@ fn F(T:! type where .Self impls W) { // CHECK:STDOUT: %T.patt.loc12_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12: type = splice_block %W.ref [concrete = constants.%W.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %W.ref: type = name_ref W, file.%W.decl [concrete = constants.%W.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_7.2: %W.type = symbolic_binding T, 0 [symbolic = %T.loc12_7.1 (constants.%T)] @@ -200,6 +200,8 @@ fn F(T:! type where .Self impls W) { // CHECK:STDOUT: %assoc0.359: %Y.assoc_type = assoc_entity element0, @Y.WithSelf.%Y.WithSelf.YF.decl [concrete] // CHECK:STDOUT: %W.type: type = facet_type <@W> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %type_where: type = facet_type [concrete] @@ -228,16 +230,23 @@ fn F(T:! type where .Self impls W) { // CHECK:STDOUT: %T.patt.loc12_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_15.1: type = splice_block %.loc12_15.2 [concrete = constants.%type_where] { -// CHECK:STDOUT: %.Self.loc12_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc12_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_10: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.loc12_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self.loc12_15 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc12_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc12_10 [concrete] +// CHECK:STDOUT: %.Self.ref.loc12_21.1: %type = name_ref .Self, %.Self.frozen.loc12_15 [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %W.ref: type = name_ref W, file.%W.decl [concrete = constants.%W.type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc12_21: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc12_21.1: type = facet_access_type %.Self.ref.loc12_21.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc12_21.1: type = converted %.Self.ref.loc12_21.1, %.Self.as_type.loc12_21.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc12_27.1 = requirement_impls %.loc12_21.1, %W.ref [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc12_21.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc12_21.2: type = facet_access_type %.Self.ref.loc12_21.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc12_21.2: type = converted %.Self.ref.loc12_21.1, %.Self.as_type.loc12_21.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc12_27.2 = requirement_impls %.loc12_21.2, %W.ref [concrete] // CHECK:STDOUT: %.loc12_15.2: type = where_expr [concrete = constants.%type_where] { -// CHECK:STDOUT: requirement_base_facet_type %.loc12_10 -// CHECK:STDOUT: requirement_impls %.loc12_21, %W.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc12_10 [concrete] +// CHECK:STDOUT: %impls.loc12_27.2 = requirement_impls %.loc12_21.2, %W.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc12_7.2: %type_where = symbolic_binding T, 0 [symbolic = %T.loc12_7.1 (constants.%T)] diff --git a/toolchain/check/testdata/named_constraint/generic.carbon b/toolchain/check/testdata/named_constraint/generic.carbon index 882ec02fa755..bbb571d26c0a 100644 --- a/toolchain/check/testdata/named_constraint/generic.carbon +++ b/toolchain/check/testdata/named_constraint/generic.carbon @@ -79,7 +79,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -113,7 +113,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc4_25.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_28.1: type = splice_block %.loc4_28.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_28.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_25.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_25.1 (constants.%T)] @@ -123,7 +123,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %U.patt.loc7_22.1: %pattern_type.5d7 = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_22.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7: type = splice_block %Z.ref [concrete = constants.%Z.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc7_22.2: %Z.type = symbolic_binding U, 0 [symbolic = %U.loc7_22.1 (constants.%U)] @@ -132,7 +132,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc9_36.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_36.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_39.1: type = splice_block %.loc9_39.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_39.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_36.2: type = symbolic_binding T, 0 [symbolic = %T.loc9_36.1 (constants.%T)] @@ -141,7 +141,7 @@ fn F(unused T:! Generic((), ())) {} // CHECK:STDOUT: %T.patt.loc9_36.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_36.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_39.1: type = splice_block %.loc10_39.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc10: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc10_39.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc10: type = symbolic_binding T, 0 [symbolic = %T.loc9_36.1 (constants.%T)] diff --git a/toolchain/check/testdata/named_constraint/import_constraint_decl.carbon b/toolchain/check/testdata/named_constraint/import_constraint_decl.carbon index 4e025b84d161..28eec053a6b9 100644 --- a/toolchain/check/testdata/named_constraint/import_constraint_decl.carbon +++ b/toolchain/check/testdata/named_constraint/import_constraint_decl.carbon @@ -80,7 +80,7 @@ impl C as B {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete] // CHECK:STDOUT: %Self.f45: %B.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] @@ -116,7 +116,7 @@ impl C as B {} // CHECK:STDOUT: %T.patt.loc4_14.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %B.ref [concrete = constants.%B.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %B.ref: type = name_ref B, imports.%Main.B [concrete = constants.%B.type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_14.2: %B.type = symbolic_binding T, 0 [symbolic = %T.loc4_14.1 (constants.%T)] diff --git a/toolchain/check/testdata/named_constraint/import_type_and.carbon b/toolchain/check/testdata/named_constraint/import_type_and.carbon index 8c957719afee..8c62a49461db 100644 --- a/toolchain/check/testdata/named_constraint/import_type_and.carbon +++ b/toolchain/check/testdata/named_constraint/import_type_and.carbon @@ -151,7 +151,7 @@ fn F(_:! N) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %N.type: type = facet_type <@N> [concrete] // CHECK:STDOUT: %Self.f45: %N.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] @@ -198,7 +198,7 @@ fn F(_:! N) {} // CHECK:STDOUT: %_.patt.loc5_7.1: %pattern_type.9a5 = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc5_7.2 (constants.%_.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5: type = splice_block %N.ref [concrete = constants.%N.type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %N.ref: type = name_ref N, imports.%Main.N [concrete = constants.%N.type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc5_7.2: %N.type = symbolic_binding _, 0 [symbolic = %_.loc5_7.1 (constants.%_)] diff --git a/toolchain/check/testdata/named_constraint/require.carbon b/toolchain/check/testdata/named_constraint/require.carbon index 5184edd59c97..aaa3a7ad3e37 100644 --- a/toolchain/check/testdata/named_constraint/require.carbon +++ b/toolchain/check/testdata/named_constraint/require.carbon @@ -1221,13 +1221,16 @@ constraint N { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self.d87: %Z.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.d87 [symbolic] -// CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self, @Y [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %Y.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.94c: = lookup_impl_witness %.Self.frozen, @Y [symbolic_self] +// CHECK:STDOUT: %impl.elem0.74a: type = impl_witness_access %Y.lookup_impl_witness.94c, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.9c7: = lookup_impl_witness %.Self, @Y [symbolic_self] +// CHECK:STDOUT: %impl.elem0.591: type = impl_witness_access %Y.lookup_impl_witness.9c7, element0 [symbolic_self] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0.591 = %empty_tuple.type> [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1244,17 +1247,21 @@ constraint N { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.as_type.loc7_11.1: type = facet_access_type @Z.%Self [symbolic = %Self.as_type.loc7_11.2 (constants.%Self.as_type)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] -// CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %Y.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc7_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %Y.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %Y.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc7_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y1.ref: %Y.assoc_type = name_ref Y1, @Y1.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc7_25.1: type = impl_witness_access constants.%Y.lookup_impl_witness.94c, element0 [symbolic_self = constants.%impl.elem0.74a] // CHECK:STDOUT: %.loc7_32.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc7_32.2: type = converted %.loc7_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc7_29.1 = requirement_rewrite %impl.elem0.loc7_25.1, %.loc7_32.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc7_25.2: type = impl_witness_access constants.%Y.lookup_impl_witness.9c7, element0 [symbolic_self = constants.%impl.elem0.591] +// CHECK:STDOUT: %rewrite.loc7_29.2 = requirement_rewrite %impl.elem0.loc7_25.2, %.loc7_32.2 [concrete] // CHECK:STDOUT: %.loc7_19: type = where_expr [concrete = constants.%Y_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %Y.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc7_32.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %rewrite.loc7_29.2 = requirement_rewrite %impl.elem0.loc7_25.2, %.loc7_32.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1310,7 +1317,7 @@ constraint N { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -1325,7 +1332,7 @@ constraint N { // 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: } { // CHECK:STDOUT: %.loc8_18.1: type = splice_block %.loc8_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc8_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_15.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_15.1 (constants.%T)] @@ -1371,11 +1378,14 @@ constraint N { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %Self.d87: %Z.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.d87 [symbolic] +// CHECK:STDOUT: %.Self.frozen: %Y.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] +// CHECK:STDOUT: %Y.lookup_impl_witness.94c: = lookup_impl_witness %.Self.frozen, @Y [symbolic_self] +// CHECK:STDOUT: %impl.elem0.74a: type = impl_witness_access %Y.lookup_impl_witness.94c, element0 [symbolic_self] // CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] -// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self, @Y [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0 = %Self.as_type> [symbolic] +// CHECK:STDOUT: %Y.lookup_impl_witness.9c7: = lookup_impl_witness %.Self, @Y [symbolic_self] +// CHECK:STDOUT: %impl.elem0.591: type = impl_witness_access %Y.lookup_impl_witness.9c7, element0 [symbolic_self] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where %impl.elem0.591 = %Self.as_type> [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1392,18 +1402,22 @@ constraint N { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.as_type.loc10_11.1: type = facet_access_type @Z.%Self [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] // CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] -// CHECK:STDOUT: %.Self: %Y.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %Y.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %Y.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %Y.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_25: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Y1.ref: %Y.assoc_type = name_ref Y1, @Y1.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%Y.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_25.1: type = impl_witness_access constants.%Y.lookup_impl_witness.94c, element0 [symbolic_self = constants.%impl.elem0.74a] // CHECK:STDOUT: %Self.ref: %Z.type = name_ref Self, @Z.%Self [symbolic = %Self (constants.%Self.d87)] // CHECK:STDOUT: %Self.as_type.loc10_31: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc10_31: type = converted %Self.ref, %Self.as_type.loc10_31 [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] +// CHECK:STDOUT: %rewrite.loc10_29.1 = requirement_rewrite %impl.elem0.loc10_25.1, %.loc10_31 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_25.2: type = impl_witness_access constants.%Y.lookup_impl_witness.9c7, element0 [symbolic_self = constants.%impl.elem0.591] +// CHECK:STDOUT: %rewrite.loc10_29.2 = requirement_rewrite %impl.elem0.loc10_25.2, %.loc10_31 [concrete] // CHECK:STDOUT: %.loc10_19: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type)] { -// CHECK:STDOUT: requirement_base_facet_type %Y.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_31 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_29.2 = requirement_rewrite %impl.elem0.loc10_25.2, %.loc10_31 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1421,7 +1435,7 @@ constraint N { // CHECK:STDOUT: generic require @Z.WithSelf.Self.as_type.impls.Y_where.type.require(@Z.%Self: %Z.type) { // CHECK:STDOUT: %Self: %Z.type = symbolic_binding Self, 0 [symbolic = %Self (constants.%Self.d87)] // CHECK:STDOUT: %Self.as_type.loc10_11.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where constants.%impl.elem0 = %Self.as_type.loc10_11.2> [symbolic = %Y_where.type (constants.%Y_where.type)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y where constants.%impl.elem0.591 = %Self.as_type.loc10_11.2> [symbolic = %Y_where.type (constants.%Y_where.type)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Z.WithSelf(constants.%Self.d87) {} @@ -1437,22 +1451,25 @@ constraint N { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Y.type.cb4: type = generic_interface_type @Y [concrete] // CHECK:STDOUT: %Y.generic: %Y.type.cb4 = struct_value () [concrete] // CHECK:STDOUT: %N.type: type = facet_type <@N> [concrete] // CHECK:STDOUT: %Self.d87: %N.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type.138: type = facet_access_type %Self.d87 [symbolic] -// CHECK:STDOUT: %.Self.94e: %Z.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type.e58: type = facet_access_type %.Self.94e [symbolic_self] -// CHECK:STDOUT: %Y.type.62b: type = facet_type <@Y, @Y(%.Self.as_type.e58)> [symbolic_self] -// CHECK:STDOUT: %Z_where.type.946: type = facet_type <@Z where .Self impls @Y, @Y(%.Self.as_type.e58)> [concrete] +// CHECK:STDOUT: %.Self.frozen.7b7: %Z.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.e08: type = facet_access_type %.Self.frozen.7b7 [symbolic_self] +// CHECK:STDOUT: %Y.type.d83: type = facet_type <@Y, @Y(%.Self.frozen.as_type.e08)> [symbolic_self] +// CHECK:STDOUT: %.Self.9b4: %Z.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type.179: type = facet_access_type %.Self.9b4 [symbolic_self] +// CHECK:STDOUT: %Y.type.c15: type = facet_type <@Y, @Y(%.Self.as_type.179)> [symbolic_self] +// CHECK:STDOUT: %Z_where.type.794: type = facet_type <@Z where .Self impls @Y, @Y(%.Self.as_type.179)> [concrete] // CHECK:STDOUT: %Z_where.type.0d5: type = facet_type <@Z where .Self impls @Y, @Y(%Self.as_type.138)> [symbolic] -// CHECK:STDOUT: %.Self.as_type.246: type = facet_access_type %.Self.c39 [symbolic_self] -// CHECK:STDOUT: %facet_type.45c: type = facet_type <@Z & @Y, @Y(%.Self.as_type.246)> [symbolic_self] -// CHECK:STDOUT: %T.a60: %facet_type.45c = symbolic_binding T, 0 [symbolic] -// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.a60 [symbolic] -// CHECK:STDOUT: %Z_where.type.92a: type = facet_type <@Z where .Self impls @Y, @Y(%T.as_type)> [symbolic] +// CHECK:STDOUT: %.Self.e0b: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type.007: type = facet_access_type %.Self.e0b [symbolic_self] +// CHECK:STDOUT: %facet_type.eeb: type = facet_type <@Z & @Y, @Y(%.Self.as_type.007)> [symbolic_self] +// CHECK:STDOUT: %T.c35: %facet_type.eeb = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.c35 [symbolic] +// CHECK:STDOUT: %Z_where.type.eca: type = facet_type <@Z where .Self impls @Y, @Y(%T.as_type)> [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1469,18 +1486,26 @@ constraint N { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.as_type.loc10_11.1: type = facet_access_type @N.%Self [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type.138)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] -// CHECK:STDOUT: %.Self: %Z.type = symbolic_binding .Self [symbolic_self = constants.%.Self.94e] -// CHECK:STDOUT: %.Self.ref.loc10_25: %Z.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.94e] +// CHECK:STDOUT: %.Self.frozen: %Z.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.7b7] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_25.1: %Z.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.7b7] // CHECK:STDOUT: %Y.ref: %Y.type.cb4 = name_ref Y, file.%Y.decl [concrete = constants.%Y.generic] -// CHECK:STDOUT: %.Self.ref.loc10_39: %Z.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.94e] -// CHECK:STDOUT: %.Self.as_type.loc10_44: type = facet_access_type %.Self.ref.loc10_39 [symbolic_self = constants.%.Self.as_type.e58] -// CHECK:STDOUT: %.loc10_44: type = converted %.Self.ref.loc10_39, %.Self.as_type.loc10_44 [symbolic_self = constants.%.Self.as_type.e58] -// CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(constants.%.Self.as_type.e58)> [symbolic_self = constants.%Y.type.62b] -// CHECK:STDOUT: %.Self.as_type.loc10_25: type = facet_access_type %.Self.ref.loc10_25 [symbolic_self = constants.%.Self.as_type.e58] -// CHECK:STDOUT: %.loc10_25: type = converted %.Self.ref.loc10_25, %.Self.as_type.loc10_25 [symbolic_self = constants.%.Self.as_type.e58] -// CHECK:STDOUT: %.loc10_19: type = where_expr [concrete = constants.%Z_where.type.946] { -// CHECK:STDOUT: requirement_base_facet_type %Z.ref -// CHECK:STDOUT: requirement_impls %.loc10_25, %Y.type +// CHECK:STDOUT: %.Self.ref.loc10_39: %Z.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.7b7] +// CHECK:STDOUT: %.Self.as_type.loc10_44: type = facet_access_type %.Self.ref.loc10_39 [symbolic_self = constants.%.Self.frozen.as_type.e08] +// CHECK:STDOUT: %.loc10_44: type = converted %.Self.ref.loc10_39, %.Self.as_type.loc10_44 [symbolic_self = constants.%.Self.frozen.as_type.e08] +// CHECK:STDOUT: %Y.type.loc10_44.1: type = facet_type <@Y, @Y(constants.%.Self.frozen.as_type.e08)> [symbolic_self = constants.%Y.type.d83] +// CHECK:STDOUT: %.Self.as_type.loc10_25.1: type = facet_access_type %.Self.ref.loc10_25.1 [symbolic_self = constants.%.Self.frozen.as_type.e08] +// CHECK:STDOUT: %.loc10_25.1: type = converted %.Self.ref.loc10_25.1, %.Self.as_type.loc10_25.1 [symbolic_self = constants.%.Self.frozen.as_type.e08] +// CHECK:STDOUT: %impls.loc10_31.1 = requirement_impls %.loc10_25.1, %Y.type.loc10_44.1 [concrete] +// CHECK:STDOUT: %.Self: %Z.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9b4] +// CHECK:STDOUT: %.Self.ref.loc10_25.2: %Z.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.9b4] +// CHECK:STDOUT: %.Self.as_type.loc10_25.2: type = facet_access_type %.Self.ref.loc10_25.2 [symbolic_self = constants.%.Self.as_type.179] +// CHECK:STDOUT: %.loc10_25.2: type = converted %.Self.ref.loc10_25.1, %.Self.as_type.loc10_25.2 [symbolic_self = constants.%.Self.as_type.179] +// CHECK:STDOUT: %Y.type.loc10_44.2: type = facet_type <@Y, @Y(constants.%.Self.as_type.179)> [symbolic_self = constants.%Y.type.c15] +// CHECK:STDOUT: %impls.loc10_31.2 = requirement_impls %.loc10_25.2, %Y.type.loc10_44.2 [concrete] +// CHECK:STDOUT: %.loc10_19: type = where_expr [concrete = constants.%Z_where.type.794] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.ref [concrete] +// CHECK:STDOUT: %impls.loc10_31.2 = requirement_impls %.loc10_25.2, %Y.type.loc10_44.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %Z_where.type.loc10_19.1: type = facet_type <@Z where .Self impls @Y, @Y(constants.%Self.as_type.138)> [symbolic = %Z_where.type.loc10_19.3 (constants.%Z_where.type.0d5)] // CHECK:STDOUT: %Z_where.type.loc10_19.2: type = facet_type <@Z where .Self impls @Y, @Y(constants.%Self.as_type.138)> [symbolic = %Z_where.type.loc10_19.3 (constants.%Z_where.type.0d5)] @@ -1515,14 +1540,14 @@ constraint N { // CHECK:STDOUT: %Z_where.type.loc10_19.3 => constants.%Z_where.type.0d5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @N.WithSelf(constants.%T.a60) { +// CHECK:STDOUT: specific @N.WithSelf(constants.%T.c35) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @N.WithSelf.Self.as_type.impls.Z_where.type.require(constants.%T.a60) { -// CHECK:STDOUT: %Self => constants.%T.a60 +// CHECK:STDOUT: specific @N.WithSelf.Self.as_type.impls.Z_where.type.require(constants.%T.c35) { +// CHECK:STDOUT: %Self => constants.%T.c35 // CHECK:STDOUT: %Self.as_type.loc10_11.2 => constants.%T.as_type -// CHECK:STDOUT: %Z_where.type.loc10_19.3 => constants.%Z_where.type.92a +// CHECK:STDOUT: %Z_where.type.loc10_19.3 => constants.%Z_where.type.eca // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- require_with_specific_period_self.carbon @@ -1536,11 +1561,15 @@ constraint N { // CHECK:STDOUT: %N.type: type = facet_type <@N> [concrete] // CHECK:STDOUT: %Self.d87: %N.type = symbolic_binding Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.d87 [symbolic] -// CHECK:STDOUT: %.Self.94e: %Z.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.94e [symbolic_self] -// CHECK:STDOUT: %C.328: type = class_type @C, @C(%.Self.as_type) [symbolic_self] -// CHECK:STDOUT: %Y.type.62b: type = facet_type <@Y, @Y(%.Self.as_type)> [symbolic_self] -// CHECK:STDOUT: %Z_where.type.a0f3c6.1: type = facet_type <@Z where %C.328 impls @Y, @Y(%.Self.as_type)> [concrete] +// CHECK:STDOUT: %.Self.frozen.7b7: %Z.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.7b7 [symbolic_self] +// CHECK:STDOUT: %C.6bd: type = class_type @C, @C(%.Self.frozen.as_type) [symbolic_self] +// CHECK:STDOUT: %Y.type.d83: type = facet_type <@Y, @Y(%.Self.frozen.as_type)> [symbolic_self] +// CHECK:STDOUT: %.Self: %Z.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %C.ae2: type = class_type @C, @C(%.Self.as_type) [symbolic_self] +// CHECK:STDOUT: %Y.type.c15: type = facet_type <@Y, @Y(%.Self.as_type)> [symbolic_self] +// CHECK:STDOUT: %Z_where.type.a0f3c6.1: type = facet_type <@Z where %C.ae2 impls @Y, @Y(%.Self.as_type)> [concrete] // CHECK:STDOUT: %C.e83: type = class_type @C, @C(%Self.as_type) [symbolic] // CHECK:STDOUT: %Z_where.type.a0f3c6.2: type = facet_type <@Z where %C.e83 impls @Y, @Y(%Self.as_type)> [symbolic] // CHECK:STDOUT: %T.013: %Z.type = symbolic_binding T, 0 [symbolic] @@ -1563,20 +1592,25 @@ constraint N { // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.as_type.loc10_11.1: type = facet_access_type @N.%Self [symbolic = %Self.as_type.loc10_11.2 (constants.%Self.as_type)] // CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] -// CHECK:STDOUT: %.Self: %Z.type = symbolic_binding .Self [symbolic_self = constants.%.Self.94e] +// CHECK:STDOUT: %.Self.frozen: %Z.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.7b7] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.ref [concrete] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic] -// CHECK:STDOUT: %.Self.ref.loc10_27: %Z.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.94e] -// CHECK:STDOUT: %.Self.as_type.loc10_32: type = facet_access_type %.Self.ref.loc10_27 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_27, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %C.loc10_32: type = class_type @C, @C(constants.%.Self.as_type) [symbolic_self = constants.%C.328] +// CHECK:STDOUT: %.Self.ref.loc10_27: %Z.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.7b7] +// CHECK:STDOUT: %.Self.as_type.loc10_32: type = facet_access_type %.Self.ref.loc10_27 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_32: type = converted %.Self.ref.loc10_27, %.Self.as_type.loc10_32 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %C.loc10_32.1: type = class_type @C, @C(constants.%.Self.frozen.as_type) [symbolic_self = constants.%C.6bd] // CHECK:STDOUT: %Y.ref: %Y.type.cb4 = name_ref Y, file.%Y.decl [concrete = constants.%Y.generic] -// CHECK:STDOUT: %.Self.ref.loc10_42: %Z.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.94e] -// CHECK:STDOUT: %.Self.as_type.loc10_47: type = facet_access_type %.Self.ref.loc10_42 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_47: type = converted %.Self.ref.loc10_42, %.Self.as_type.loc10_47 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(constants.%.Self.as_type)> [symbolic_self = constants.%Y.type.62b] +// CHECK:STDOUT: %.Self.ref.loc10_42: %Z.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.7b7] +// CHECK:STDOUT: %.Self.as_type.loc10_47: type = facet_access_type %.Self.ref.loc10_42 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_47: type = converted %.Self.ref.loc10_42, %.Self.as_type.loc10_47 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %Y.type.loc10_47.1: type = facet_type <@Y, @Y(constants.%.Self.frozen.as_type)> [symbolic_self = constants.%Y.type.d83] +// CHECK:STDOUT: %impls.loc10_34.1 = requirement_impls %C.loc10_32.1, %Y.type.loc10_47.1 [concrete] +// CHECK:STDOUT: %C.loc10_32.2: type = class_type @C, @C(constants.%.Self.as_type) [symbolic_self = constants.%C.ae2] +// CHECK:STDOUT: %Y.type.loc10_47.2: type = facet_type <@Y, @Y(constants.%.Self.as_type)> [symbolic_self = constants.%Y.type.c15] +// CHECK:STDOUT: %impls.loc10_34.2 = requirement_impls %C.loc10_32.2, %Y.type.loc10_47.2 [concrete] // CHECK:STDOUT: %.loc10_19: type = where_expr [concrete = constants.%Z_where.type.a0f3c6.1] { -// CHECK:STDOUT: requirement_base_facet_type %Z.ref -// CHECK:STDOUT: requirement_impls %C.loc10_32, %Y.type +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.ref [concrete] +// CHECK:STDOUT: %impls.loc10_34.2 = requirement_impls %C.loc10_32.2, %Y.type.loc10_47.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %Z_where.type.loc10_19.1: type = facet_type <@Z where constants.%C.e83 impls @Y, @Y(constants.%Self.as_type)> [symbolic = %Z_where.type.loc10_19.3 (constants.%Z_where.type.a0f3c6.2)] // CHECK:STDOUT: %Z_where.type.loc10_19.2: type = facet_type <@Z where constants.%C.e83 impls @Y, @Y(constants.%Self.as_type)> [symbolic = %Z_where.type.loc10_19.3 (constants.%Z_where.type.a0f3c6.2)] diff --git a/toolchain/check/testdata/namespace/fail_params.carbon b/toolchain/check/testdata/namespace/fail_params.carbon index cec162dbad1b..0000d5d9a458 100644 --- a/toolchain/check/testdata/namespace/fail_params.carbon +++ b/toolchain/check/testdata/namespace/fail_params.carbon @@ -53,7 +53,7 @@ fn D(unused T:! type).F() {} // CHECK:STDOUT: %F.type.14e: type = fn_type @F.loc22 [concrete] // CHECK:STDOUT: %F.19f: %F.type.14e = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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.67db0b.1: type = symbolic_binding T, 0 [symbolic] @@ -88,7 +88,7 @@ fn D(unused T:! type).F() {} // CHECK:STDOUT: %n: = wrapper_binding n, [concrete = ] // CHECK:STDOUT: %B: = namespace [concrete] {} // CHECK:STDOUT: %.loc38_17.1: type = splice_block %.loc38_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc38_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = constants.%T.67db0b.1] @@ -99,7 +99,7 @@ fn D(unused T:! type).F() {} // CHECK:STDOUT: %D: = namespace [concrete] {} // CHECK:STDOUT: %F.decl.loc48: %F.type.eb3 = fn_decl @F.loc48 [concrete = constants.%F.708] {} { // CHECK:STDOUT: %.loc48_17.1: type = splice_block %.loc48_17.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc48_17.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc48_14.3: type = symbolic_binding T, 0 [symbolic = %T.loc48_14.2 (constants.%T.67db0b.2)] diff --git a/toolchain/check/testdata/operators/overloaded/add.carbon b/toolchain/check/testdata/operators/overloaded/add.carbon index a5e3e5ba6f4b..d8a5a07d981c 100644 --- a/toolchain/check/testdata/operators/overloaded/add.carbon +++ b/toolchain/check/testdata/operators/overloaded/add.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.AddWith.impl.Op.type: type = fn_type @C.as.AddWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.AddWith.impl.Op: %C.as.AddWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %AddWith.facet: %AddWith.type.2bd = facet_value %C, (%AddWith.impl_witness) [concrete] -// CHECK:STDOUT: %AddWith.WithSelf.Op.type.c2b: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%C, %AddWith.facet) [concrete] +// CHECK:STDOUT: %AddWith.WithSelf.Op.type.a89: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%C, %AddWith.facet) [concrete] // CHECK:STDOUT: %AddAssignWith.type.cba: type = facet_type <@AddAssignWith, @AddAssignWith(%C)> [concrete] // CHECK:STDOUT: %AddAssignWith.impl_witness: = impl_witness @C.as.AddAssignWith.impl.%AddAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.AddAssignWith.impl.Op.type: type = fn_type @C.as.AddAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.AddAssignWith.impl.Op: %C.as.AddAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %AddAssignWith.facet: %AddAssignWith.type.cba = facet_value %C, (%AddAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %AddAssignWith.WithSelf.Op.type.62f: type = fn_type @AddAssignWith.WithSelf.Op, @AddAssignWith.WithSelf(%C, %AddAssignWith.facet) [concrete] -// CHECK:STDOUT: %.757: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.c2b, %AddWith.facet [concrete] +// CHECK:STDOUT: %.ca0: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.a89, %AddWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.fbc: type = fn_type_with_self_type %AddAssignWith.WithSelf.Op.type.62f, %AddAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.757 = impl_witness_access constants.%AddWith.impl_witness, element1 [concrete = constants.%C.as.AddWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.ca0 = impl_witness_access constants.%AddWith.impl_witness, element1 [concrete = constants.%C.as.AddWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.AddWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/bit_and.carbon b/toolchain/check/testdata/operators/overloaded/bit_and.carbon index 045e30f78e9c..9b3bb04245b2 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_and.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_and.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.BitAndWith.impl.Op.type: type = fn_type @C.as.BitAndWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.BitAndWith.impl.Op: %C.as.BitAndWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.8cc = facet_value %C, (%BitAndWith.impl_witness) [concrete] -// CHECK:STDOUT: %BitAndWith.WithSelf.Op.type.a71: type = fn_type @BitAndWith.WithSelf.Op, @BitAndWith.WithSelf(%C, %BitAndWith.facet) [concrete] +// CHECK:STDOUT: %BitAndWith.WithSelf.Op.type.7f6: type = fn_type @BitAndWith.WithSelf.Op, @BitAndWith.WithSelf(%C, %BitAndWith.facet) [concrete] // CHECK:STDOUT: %BitAndAssignWith.type.491: type = facet_type <@BitAndAssignWith, @BitAndAssignWith(%C)> [concrete] // CHECK:STDOUT: %BitAndAssignWith.impl_witness: = impl_witness @C.as.BitAndAssignWith.impl.%BitAndAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.BitAndAssignWith.impl.Op.type: type = fn_type @C.as.BitAndAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.BitAndAssignWith.impl.Op: %C.as.BitAndAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitAndAssignWith.facet: %BitAndAssignWith.type.491 = facet_value %C, (%BitAndAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %BitAndAssignWith.WithSelf.Op.type.8fc: type = fn_type @BitAndAssignWith.WithSelf.Op, @BitAndAssignWith.WithSelf(%C, %BitAndAssignWith.facet) [concrete] -// CHECK:STDOUT: %.663: type = fn_type_with_self_type %BitAndWith.WithSelf.Op.type.a71, %BitAndWith.facet [concrete] +// CHECK:STDOUT: %.49c: type = fn_type_with_self_type %BitAndWith.WithSelf.Op.type.7f6, %BitAndWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.4b9: type = fn_type_with_self_type %BitAndAssignWith.WithSelf.Op.type.8fc, %BitAndAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.663 = impl_witness_access constants.%BitAndWith.impl_witness, element1 [concrete = constants.%C.as.BitAndWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.49c = impl_witness_access constants.%BitAndWith.impl_witness, element1 [concrete = constants.%C.as.BitAndWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.BitAndWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon index e7750b75b30b..d24b67454b28 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon @@ -39,14 +39,14 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %C.as.BitComplement.impl.Op.type: type = fn_type @C.as.BitComplement.impl.Op [concrete] // CHECK:STDOUT: %C.as.BitComplement.impl.Op: %C.as.BitComplement.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitComplement.facet: %BitComplement.type = facet_value %C, (%BitComplement.impl_witness) [concrete] -// CHECK:STDOUT: %BitComplement.WithSelf.Op.type.6db: type = fn_type @BitComplement.WithSelf.Op, @BitComplement.WithSelf(%BitComplement.facet) [concrete] -// CHECK:STDOUT: %.827: type = fn_type_with_self_type %BitComplement.WithSelf.Op.type.6db, %BitComplement.facet [concrete] +// CHECK:STDOUT: %BitComplement.WithSelf.Op.type.697: type = fn_type @BitComplement.WithSelf.Op, @BitComplement.WithSelf(%BitComplement.facet) [concrete] +// CHECK:STDOUT: %.6c8: type = fn_type_with_self_type %BitComplement.WithSelf.Op.type.697, %BitComplement.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param: %C) -> out %return.param: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a -// CHECK:STDOUT: %impl.elem1: %.827 = impl_witness_access constants.%BitComplement.impl_witness, element1 [concrete = constants.%C.as.BitComplement.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.6c8 = impl_witness_access constants.%BitComplement.impl_witness, element1 [concrete = constants.%C.as.BitComplement.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.BitComplement.impl.Op.call: init %C to %.loc27_20.1 = call %bound_method(%a.ref) diff --git a/toolchain/check/testdata/operators/overloaded/bit_or.carbon b/toolchain/check/testdata/operators/overloaded/bit_or.carbon index be682efa2209..b7cebeba294c 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_or.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_or.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.BitOrWith.impl.Op.type: type = fn_type @C.as.BitOrWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.BitOrWith.impl.Op: %C.as.BitOrWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitOrWith.facet: %BitOrWith.type.f57 = facet_value %C, (%BitOrWith.impl_witness) [concrete] -// CHECK:STDOUT: %BitOrWith.WithSelf.Op.type.ac5: type = fn_type @BitOrWith.WithSelf.Op, @BitOrWith.WithSelf(%C, %BitOrWith.facet) [concrete] +// CHECK:STDOUT: %BitOrWith.WithSelf.Op.type.8e0: type = fn_type @BitOrWith.WithSelf.Op, @BitOrWith.WithSelf(%C, %BitOrWith.facet) [concrete] // CHECK:STDOUT: %BitOrAssignWith.type.d30: type = facet_type <@BitOrAssignWith, @BitOrAssignWith(%C)> [concrete] // CHECK:STDOUT: %BitOrAssignWith.impl_witness: = impl_witness @C.as.BitOrAssignWith.impl.%BitOrAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.BitOrAssignWith.impl.Op.type: type = fn_type @C.as.BitOrAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.BitOrAssignWith.impl.Op: %C.as.BitOrAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitOrAssignWith.facet: %BitOrAssignWith.type.d30 = facet_value %C, (%BitOrAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %BitOrAssignWith.WithSelf.Op.type.fa7: type = fn_type @BitOrAssignWith.WithSelf.Op, @BitOrAssignWith.WithSelf(%C, %BitOrAssignWith.facet) [concrete] -// CHECK:STDOUT: %.502: type = fn_type_with_self_type %BitOrWith.WithSelf.Op.type.ac5, %BitOrWith.facet [concrete] +// CHECK:STDOUT: %.941: type = fn_type_with_self_type %BitOrWith.WithSelf.Op.type.8e0, %BitOrWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.9d7: type = fn_type_with_self_type %BitOrAssignWith.WithSelf.Op.type.fa7, %BitOrAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.502 = impl_witness_access constants.%BitOrWith.impl_witness, element1 [concrete = constants.%C.as.BitOrWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.941 = impl_witness_access constants.%BitOrWith.impl_witness, element1 [concrete = constants.%C.as.BitOrWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.BitOrWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon index 8782d0856676..60ff20c889af 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.BitXorWith.impl.Op.type: type = fn_type @C.as.BitXorWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.BitXorWith.impl.Op: %C.as.BitXorWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitXorWith.facet: %BitXorWith.type.5f3 = facet_value %C, (%BitXorWith.impl_witness) [concrete] -// CHECK:STDOUT: %BitXorWith.WithSelf.Op.type.1cd: type = fn_type @BitXorWith.WithSelf.Op, @BitXorWith.WithSelf(%C, %BitXorWith.facet) [concrete] +// CHECK:STDOUT: %BitXorWith.WithSelf.Op.type.6b7: type = fn_type @BitXorWith.WithSelf.Op, @BitXorWith.WithSelf(%C, %BitXorWith.facet) [concrete] // CHECK:STDOUT: %BitXorAssignWith.type.80d: type = facet_type <@BitXorAssignWith, @BitXorAssignWith(%C)> [concrete] // CHECK:STDOUT: %BitXorAssignWith.impl_witness: = impl_witness @C.as.BitXorAssignWith.impl.%BitXorAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.BitXorAssignWith.impl.Op.type: type = fn_type @C.as.BitXorAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.BitXorAssignWith.impl.Op: %C.as.BitXorAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %BitXorAssignWith.facet: %BitXorAssignWith.type.80d = facet_value %C, (%BitXorAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %BitXorAssignWith.WithSelf.Op.type.741: type = fn_type @BitXorAssignWith.WithSelf.Op, @BitXorAssignWith.WithSelf(%C, %BitXorAssignWith.facet) [concrete] -// CHECK:STDOUT: %.67c: type = fn_type_with_self_type %BitXorWith.WithSelf.Op.type.1cd, %BitXorWith.facet [concrete] +// CHECK:STDOUT: %.681: type = fn_type_with_self_type %BitXorWith.WithSelf.Op.type.6b7, %BitXorWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.046: type = fn_type_with_self_type %BitXorAssignWith.WithSelf.Op.type.741, %BitXorAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.67c = impl_witness_access constants.%BitXorWith.impl_witness, element1 [concrete = constants.%C.as.BitXorWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.681 = impl_witness_access constants.%BitXorWith.impl_witness, element1 [concrete = constants.%C.as.BitXorWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.BitXorWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/div.carbon b/toolchain/check/testdata/operators/overloaded/div.carbon index c067ef6a5d44..05dd54a17f59 100644 --- a/toolchain/check/testdata/operators/overloaded/div.carbon +++ b/toolchain/check/testdata/operators/overloaded/div.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.DivWith.impl.Op.type: type = fn_type @C.as.DivWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.DivWith.impl.Op: %C.as.DivWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %DivWith.facet: %DivWith.type.148 = facet_value %C, (%DivWith.impl_witness) [concrete] -// CHECK:STDOUT: %DivWith.WithSelf.Op.type.b48: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%C, %DivWith.facet) [concrete] +// CHECK:STDOUT: %DivWith.WithSelf.Op.type.6d9: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%C, %DivWith.facet) [concrete] // CHECK:STDOUT: %DivAssignWith.type.dad: type = facet_type <@DivAssignWith, @DivAssignWith(%C)> [concrete] // CHECK:STDOUT: %DivAssignWith.impl_witness: = impl_witness @C.as.DivAssignWith.impl.%DivAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.DivAssignWith.impl.Op.type: type = fn_type @C.as.DivAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.DivAssignWith.impl.Op: %C.as.DivAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %DivAssignWith.facet: %DivAssignWith.type.dad = facet_value %C, (%DivAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %DivAssignWith.WithSelf.Op.type.417: type = fn_type @DivAssignWith.WithSelf.Op, @DivAssignWith.WithSelf(%C, %DivAssignWith.facet) [concrete] -// CHECK:STDOUT: %.713: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.b48, %DivWith.facet [concrete] +// CHECK:STDOUT: %.9a8: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.6d9, %DivWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.647: type = fn_type_with_self_type %DivAssignWith.WithSelf.Op.type.417, %DivAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.713 = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%C.as.DivWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.9a8 = impl_witness_access constants.%DivWith.impl_witness, element1 [concrete = constants.%C.as.DivWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.DivWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index c2117cdc738b..f72a52b0a901 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -99,7 +99,7 @@ fn Test() { // CHECK:STDOUT: %Sink_X.type: type = fn_type @Sink_X [concrete] // CHECK:STDOUT: %Sink_X: %Sink_X.type = struct_value () [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.184347.2: Core.Form = init_form %T.67d [symbolic] // CHECK:STDOUT: %pattern_type.51d1c4.2: type = pattern_type %T.67d [symbolic] // CHECK:STDOUT: %return.param_patt.41d2d9.2: %pattern_type.51d1c4.2 = out_param_pattern [symbolic] @@ -185,7 +185,7 @@ fn Test() { // CHECK:STDOUT: %T.ref.loc31_24: type = name_ref T, %T.loc31_12.2 [symbolic = %T.loc31_12.1 (constants.%T.67d)] // CHECK:STDOUT: %.loc31_24.3: Core.Form = init_form %T.ref.loc31_24 [symbolic = %.loc31_24.2 (constants.%.184347.2)] // CHECK:STDOUT: %.loc31_15.1: type = splice_block %.loc31_15.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc31_15.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc31_12.2: type = symbolic_binding T, 0 [symbolic = %T.loc31_12.1 (constants.%T.67d)] diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index 6f2ded064138..433254f24744 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -187,7 +187,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %SubscriptType.patt: %pattern_type.98f = symbolic_binding_pattern SubscriptType, 0 [symbolic] // CHECK:STDOUT: %SubscriptType: type = symbolic_binding SubscriptType, 0 [symbolic] @@ -223,12 +223,12 @@ fn F() { // CHECK:STDOUT: %ElementType.patt.loc4_54.1: %pattern_type.98f = symbolic_binding_pattern ElementType, 1 [symbolic = %ElementType.patt.loc4_54.2 (constants.%ElementType.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_37.1: type = splice_block %.loc4_37.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_34: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_34: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_37.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %SubscriptType.loc4_34.2: type = symbolic_binding SubscriptType, 0 [symbolic = %SubscriptType.loc4_34.1 (constants.%SubscriptType)] // CHECK:STDOUT: %.loc4_57.1: type = splice_block %.loc4_57.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc4_54: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc4_54: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_57.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %ElementType.loc4_54.2: type = symbolic_binding ElementType, 1 [symbolic = %ElementType.loc4_54.1 (constants.%ElementType)] diff --git a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon index 2784a85504fe..f6660cb0582c 100644 --- a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon +++ b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon @@ -96,14 +96,17 @@ let x: i32 = c[0]; // CHECK:STDOUT: %SubscriptType.67d: type = symbolic_binding SubscriptType, 0 [symbolic] // CHECK:STDOUT: %IndexWith.assoc_type.e15: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType.67d) [symbolic] // CHECK:STDOUT: %IndexWith.type.d74: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.f8f)> [concrete] -// CHECK:STDOUT: %.Self: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %IndexWith.assoc_type.144: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType.f8f) [concrete] // CHECK:STDOUT: %assoc0.c96: %IndexWith.assoc_type.144 = assoc_entity element0, imports.%Core.import_ref.fc2 [concrete] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %assoc0.a4e: %IndexWith.assoc_type.e15 = assoc_entity element0, imports.%Core.import_ref.6b6 [symbolic] -// CHECK:STDOUT: %IndexWith.lookup_impl_witness.dea: = lookup_impl_witness %.Self, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.8a5: type = impl_witness_access %IndexWith.lookup_impl_witness.dea, element0 [symbolic_self] -// CHECK:STDOUT: %IndexWith_where.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.f8f) where %impl.elem0.8a5 = %ElementType> [concrete] +// CHECK:STDOUT: %IndexWith.lookup_impl_witness.a61: = lookup_impl_witness %.Self.frozen, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e0a: type = impl_witness_access %IndexWith.lookup_impl_witness.a61, element0 [symbolic_self] +// CHECK:STDOUT: %.Self: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %IndexWith.lookup_impl_witness.2a2: = lookup_impl_witness %.Self, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.fc1: type = impl_witness_access %IndexWith.lookup_impl_witness.2a2, element0 [symbolic_self] +// CHECK:STDOUT: %IndexWith_where.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.f8f) where %impl.elem0.fc1 = %ElementType> [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] @@ -112,7 +115,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %subscript.param_patt.5ee: %pattern_type.ea5 = value_param_pattern [concrete] // CHECK:STDOUT: %subscript.patt.a6f: %pattern_type.ea5 = at_binding_pattern subscript, %subscript.param_patt.5ee [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.d74 = facet_value %C, (%IndexWith.impl_witness) [concrete] -// CHECK:STDOUT: %IndexWith.WithSelf.At.type.bb5: type = fn_type @IndexWith.WithSelf.At, @IndexWith.WithSelf(%SubscriptType.f8f, %IndexWith.facet) [concrete] +// CHECK:STDOUT: %IndexWith.WithSelf.At.type.41d: type = fn_type @IndexWith.WithSelf.At, @IndexWith.WithSelf(%SubscriptType.f8f, %IndexWith.facet) [concrete] // CHECK:STDOUT: %.4d0: Core.Form = init_form %ElementType [concrete] // CHECK:STDOUT: %pattern_type.67c: type = pattern_type %ElementType [concrete] // CHECK:STDOUT: %return.param_patt.41c: %pattern_type.67c = out_param_pattern [concrete] @@ -128,7 +131,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %C.val: %C = struct_value () [concrete] // CHECK:STDOUT: %.115: ref %C = temporary invalid, %C.val [concrete] // CHECK:STDOUT: %x.patt: %pattern_type.67c = value_binding_pattern x [concrete] -// CHECK:STDOUT: %.227: type = fn_type_with_self_type %IndexWith.WithSelf.At.type.bb5, %IndexWith.facet [concrete] +// CHECK:STDOUT: %.6e7: type = fn_type_with_self_type %IndexWith.WithSelf.At.type.41d, %IndexWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -164,17 +167,21 @@ let x: i32 = c[0]; // CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.df6 = name_ref IndexWith, imports.%Core.IndexWith [concrete = constants.%IndexWith.generic] // CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [concrete = constants.%SubscriptType.f8f] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%SubscriptType.f8f)> [concrete = constants.%IndexWith.type.d74] -// CHECK:STDOUT: %.Self: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %IndexWith.type.d74 = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_47.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_47.2: %IndexWith.assoc_type.144 = specific_constant imports.%Core.import_ref.bc6, @IndexWith.WithSelf(constants.%SubscriptType.f8f, constants.%.Self) [concrete = constants.%assoc0.c96] +// CHECK:STDOUT: %.Self.frozen: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] +// CHECK:STDOUT: %.Self.ref: %IndexWith.type.d74 = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_47.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_47.2: %IndexWith.assoc_type.144 = specific_constant imports.%Core.import_ref.bc6, @IndexWith.WithSelf(constants.%SubscriptType.f8f, constants.%.Self.frozen) [concrete = constants.%assoc0.c96] // CHECK:STDOUT: %ElementType.ref.loc8_47: %IndexWith.assoc_type.144 = name_ref ElementType, %.loc8_47.2 [concrete = constants.%assoc0.c96] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.dea, element0 [symbolic_self = constants.%impl.elem0.8a5] +// CHECK:STDOUT: %impl.elem0.loc8_47.1: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.a61, element0 [symbolic_self = constants.%impl.elem0.e0a] // CHECK:STDOUT: %ElementType.ref.loc8_62: type = name_ref ElementType, file.%ElementType.decl [concrete = constants.%ElementType] +// CHECK:STDOUT: %rewrite.loc8_60.1 = requirement_rewrite %impl.elem0.loc8_47.1, %ElementType.ref.loc8_62 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_47.2: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.2a2, element0 [symbolic_self = constants.%impl.elem0.fc1] +// CHECK:STDOUT: %rewrite.loc8_60.2 = requirement_rewrite %impl.elem0.loc8_47.2, %ElementType.ref.loc8_62 [concrete] // CHECK:STDOUT: %.loc8_41: type = where_expr [concrete = constants.%IndexWith_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %IndexWith.type -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %ElementType.ref.loc8_62 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] +// CHECK:STDOUT: %rewrite.loc8_60.2 = requirement_rewrite %impl.elem0.loc8_47.2, %ElementType.ref.loc8_62 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14_25.1: ref %SubscriptType.f8f = temporary_storage @@ -281,7 +288,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.loc15: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %c.ref: %C = name_ref c, file.%c // CHECK:STDOUT: %s.ref: %SubscriptType.f8f = name_ref s, file.%s -// CHECK:STDOUT: %impl.elem1: %.227 = impl_witness_access constants.%IndexWith.impl_witness, element1 [concrete = constants.%C.as.IndexWith.impl.At] +// CHECK:STDOUT: %impl.elem1: %.6e7 = impl_witness_access constants.%IndexWith.impl_witness, element1 [concrete = constants.%C.as.IndexWith.impl.At] // CHECK:STDOUT: %bound_method: = bound_method %c.ref, %impl.elem1 // CHECK:STDOUT: %.loc16: ref %ElementType = temporary_storage // CHECK:STDOUT: %C.as.IndexWith.impl.At.call: init %ElementType to %.loc16 = call %bound_method(%c.ref, %s.ref) @@ -305,14 +312,17 @@ let x: i32 = c[0]; // CHECK:STDOUT: %SubscriptType: type = symbolic_binding SubscriptType, 0 [symbolic] // CHECK:STDOUT: %IndexWith.assoc_type.e15: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType) [symbolic] // CHECK:STDOUT: %IndexWith.type.385: type = facet_type <@IndexWith, @IndexWith(Core.IntLiteral)> [concrete] -// CHECK:STDOUT: %.Self: %IndexWith.type.385 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %IndexWith.type.385 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %IndexWith.assoc_type.ecd: type = assoc_entity_type @IndexWith, @IndexWith(Core.IntLiteral) [concrete] // CHECK:STDOUT: %assoc0.abe: %IndexWith.assoc_type.ecd = assoc_entity element0, imports.%Core.import_ref.fc2 [concrete] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %assoc0.a4e: %IndexWith.assoc_type.e15 = assoc_entity element0, imports.%Core.import_ref.6b6 [symbolic] -// CHECK:STDOUT: %IndexWith.lookup_impl_witness.abf: = lookup_impl_witness %.Self, @IndexWith, @IndexWith(Core.IntLiteral) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.c76: type = impl_witness_access %IndexWith.lookup_impl_witness.abf, element0 [symbolic_self] -// CHECK:STDOUT: %IndexWith_where.type: type = facet_type <@IndexWith, @IndexWith(Core.IntLiteral) where %impl.elem0.c76 = %C> [concrete] +// CHECK:STDOUT: %IndexWith.lookup_impl_witness.5cc: = lookup_impl_witness %.Self.frozen, @IndexWith, @IndexWith(Core.IntLiteral) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.b24: type = impl_witness_access %IndexWith.lookup_impl_witness.5cc, element0 [symbolic_self] +// CHECK:STDOUT: %.Self: %IndexWith.type.385 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %IndexWith.lookup_impl_witness.c41: = lookup_impl_witness %.Self, @IndexWith, @IndexWith(Core.IntLiteral) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.7cb: type = impl_witness_access %IndexWith.lookup_impl_witness.c41, element0 [symbolic_self] +// CHECK:STDOUT: %IndexWith_where.type: type = facet_type <@IndexWith, @IndexWith(Core.IntLiteral) where %impl.elem0.7cb = %C> [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] @@ -327,13 +337,13 @@ let x: i32 = c[0]; // CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At.type: type = fn_type @tuple.type.as.IndexWith.impl.At [concrete] // CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At: %tuple.type.as.IndexWith.impl.At.type = struct_value () [concrete] // CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.385 = facet_value %tuple.type.748, (%IndexWith.impl_witness) [concrete] -// CHECK:STDOUT: %IndexWith.WithSelf.At.type.6cb: type = fn_type @IndexWith.WithSelf.At, @IndexWith.WithSelf(Core.IntLiteral, %IndexWith.facet) [concrete] +// CHECK:STDOUT: %IndexWith.WithSelf.At.type.797: type = fn_type @IndexWith.WithSelf.At, @IndexWith.WithSelf(Core.IntLiteral, %IndexWith.facet) [concrete] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %empty_tuple.4db: %C = tuple_value () [concrete] // CHECK:STDOUT: %s.patt: %pattern_type.8b4 = value_binding_pattern s [concrete] // CHECK:STDOUT: %tuple.adf: %tuple.type.748 = tuple_value (%empty_tuple.4db, %empty_tuple.4db) [concrete] // CHECK:STDOUT: %e.patt: %pattern_type.98b = value_binding_pattern e [concrete] -// CHECK:STDOUT: %.fdc: type = fn_type_with_self_type %IndexWith.WithSelf.At.type.6cb, %IndexWith.facet [concrete] +// CHECK:STDOUT: %.af9: type = fn_type_with_self_type %IndexWith.WithSelf.At.type.797, %IndexWith.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -370,17 +380,21 @@ let x: i32 = c[0]; // CHECK:STDOUT: %Core.ref.loc8_31: = name_ref Core, imports.%Core [concrete = imports.%Core] // CHECK:STDOUT: %IntLiteral.ref: type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = Core.IntLiteral] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(Core.IntLiteral)> [concrete = constants.%IndexWith.type.385] -// CHECK:STDOUT: %.Self: %IndexWith.type.385 = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %IndexWith.type.385 = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_54.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_54.2: %IndexWith.assoc_type.ecd = specific_constant imports.%Core.import_ref.bc6, @IndexWith.WithSelf(Core.IntLiteral, constants.%.Self) [concrete = constants.%assoc0.abe] +// CHECK:STDOUT: %.Self.frozen: %IndexWith.type.385 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] +// CHECK:STDOUT: %.Self.ref: %IndexWith.type.385 = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_54.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_54.2: %IndexWith.assoc_type.ecd = specific_constant imports.%Core.import_ref.bc6, @IndexWith.WithSelf(Core.IntLiteral, constants.%.Self.frozen) [concrete = constants.%assoc0.abe] // CHECK:STDOUT: %ElementType.ref: %IndexWith.assoc_type.ecd = name_ref ElementType, %.loc8_54.2 [concrete = constants.%assoc0.abe] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.abf, element0 [symbolic_self = constants.%impl.elem0.c76] +// CHECK:STDOUT: %impl.elem0.loc8_54.1: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.5cc, element0 [symbolic_self = constants.%impl.elem0.b24] // CHECK:STDOUT: %C.ref.loc8_69: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %rewrite.loc8_67.1 = requirement_rewrite %impl.elem0.loc8_54.1, %C.ref.loc8_69 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_54.2: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.c41, element0 [symbolic_self = constants.%impl.elem0.7cb] +// CHECK:STDOUT: %rewrite.loc8_67.2 = requirement_rewrite %impl.elem0.loc8_54.2, %C.ref.loc8_69 [concrete] // CHECK:STDOUT: %.loc8_48: type = where_expr [concrete = constants.%IndexWith_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %IndexWith.type -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %C.ref.loc8_69 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] +// CHECK:STDOUT: %rewrite.loc8_67.2 = requirement_rewrite %impl.elem0.loc8_54.2, %C.ref.loc8_69 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %tuple.loc14: %tuple.type.748 = tuple_value (@__global_init.%.loc14_21.2, @__global_init.%.loc14_30.2) [concrete = constants.%tuple.adf] @@ -482,7 +496,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.loc14_34: %tuple.type.748 = tuple_literal (%.loc14_21.2, %.loc14_30.2) [concrete = constants.%tuple.adf] // CHECK:STDOUT: %s.ref: %tuple.type.748 = name_ref s, file.%s // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] -// CHECK:STDOUT: %impl.elem1: %.fdc = impl_witness_access constants.%IndexWith.impl_witness, element1 [concrete = constants.%tuple.type.as.IndexWith.impl.At] +// CHECK:STDOUT: %impl.elem1: %.af9 = impl_witness_access constants.%IndexWith.impl_witness, element1 [concrete = constants.%tuple.type.as.IndexWith.impl.At] // CHECK:STDOUT: %bound_method: = bound_method %s.ref, %impl.elem1 // CHECK:STDOUT: %tuple.type.as.IndexWith.impl.At.call: init %C = call %bound_method(%s.ref, %int_0) // CHECK:STDOUT: return @@ -503,14 +517,17 @@ let x: i32 = c[0]; // CHECK:STDOUT: %SubscriptType.67d: type = symbolic_binding SubscriptType, 0 [symbolic] // CHECK:STDOUT: %IndexWith.assoc_type.e15: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType.67d) [symbolic] // CHECK:STDOUT: %IndexWith.type.d74: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.f8f)> [concrete] -// CHECK:STDOUT: %.Self: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %IndexWith.assoc_type.144: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType.f8f) [concrete] // CHECK:STDOUT: %assoc0.c96: %IndexWith.assoc_type.144 = assoc_entity element0, imports.%Core.import_ref.fc2 [concrete] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %assoc0.a4e: %IndexWith.assoc_type.e15 = assoc_entity element0, imports.%Core.import_ref.6b6 [symbolic] -// CHECK:STDOUT: %IndexWith.lookup_impl_witness.dea: = lookup_impl_witness %.Self, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.8a5: type = impl_witness_access %IndexWith.lookup_impl_witness.dea, element0 [symbolic_self] -// CHECK:STDOUT: %IndexWith_where.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.f8f) where %impl.elem0.8a5 = %ElementType> [concrete] +// CHECK:STDOUT: %IndexWith.lookup_impl_witness.a61: = lookup_impl_witness %.Self.frozen, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e0a: type = impl_witness_access %IndexWith.lookup_impl_witness.a61, element0 [symbolic_self] +// CHECK:STDOUT: %.Self: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %IndexWith.lookup_impl_witness.2a2: = lookup_impl_witness %.Self, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.fc1: type = impl_witness_access %IndexWith.lookup_impl_witness.2a2, element0 [symbolic_self] +// CHECK:STDOUT: %IndexWith_where.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.f8f) where %impl.elem0.fc1 = %ElementType> [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] @@ -566,17 +583,21 @@ let x: i32 = c[0]; // CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.df6 = name_ref IndexWith, imports.%Core.IndexWith [concrete = constants.%IndexWith.generic] // CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [concrete = constants.%SubscriptType.f8f] // CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%SubscriptType.f8f)> [concrete = constants.%IndexWith.type.d74] -// CHECK:STDOUT: %.Self: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %IndexWith.type.d74 = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_47.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc8_47.2: %IndexWith.assoc_type.144 = specific_constant imports.%Core.import_ref.bc6, @IndexWith.WithSelf(constants.%SubscriptType.f8f, constants.%.Self) [concrete = constants.%assoc0.c96] +// CHECK:STDOUT: %.Self.frozen: %IndexWith.type.d74 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] +// CHECK:STDOUT: %.Self.ref: %IndexWith.type.d74 = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_47.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc8_47.2: %IndexWith.assoc_type.144 = specific_constant imports.%Core.import_ref.bc6, @IndexWith.WithSelf(constants.%SubscriptType.f8f, constants.%.Self.frozen) [concrete = constants.%assoc0.c96] // CHECK:STDOUT: %ElementType.ref.loc8_47: %IndexWith.assoc_type.144 = name_ref ElementType, %.loc8_47.2 [concrete = constants.%assoc0.c96] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.dea, element0 [symbolic_self = constants.%impl.elem0.8a5] +// CHECK:STDOUT: %impl.elem0.loc8_47.1: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.a61, element0 [symbolic_self = constants.%impl.elem0.e0a] // CHECK:STDOUT: %ElementType.ref.loc8_62: type = name_ref ElementType, file.%ElementType.decl [concrete = constants.%ElementType] +// CHECK:STDOUT: %rewrite.loc8_60.1 = requirement_rewrite %impl.elem0.loc8_47.1, %ElementType.ref.loc8_62 [concrete] +// CHECK:STDOUT: %impl.elem0.loc8_47.2: type = impl_witness_access constants.%IndexWith.lookup_impl_witness.2a2, element0 [symbolic_self = constants.%impl.elem0.fc1] +// CHECK:STDOUT: %rewrite.loc8_60.2 = requirement_rewrite %impl.elem0.loc8_47.2, %ElementType.ref.loc8_62 [concrete] // CHECK:STDOUT: %.loc8_41: type = where_expr [concrete = constants.%IndexWith_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %IndexWith.type -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %ElementType.ref.loc8_62 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] +// CHECK:STDOUT: %rewrite.loc8_60.2 = requirement_rewrite %impl.elem0.loc8_47.2, %ElementType.ref.loc8_62 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14_13.1: ref %C = temporary_storage diff --git a/toolchain/check/testdata/operators/overloaded/left_shift.carbon b/toolchain/check/testdata/operators/overloaded/left_shift.carbon index 936c89e902ab..5ae14fe81b40 100644 --- a/toolchain/check/testdata/operators/overloaded/left_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/left_shift.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op.type: type = fn_type @C.as.LeftShiftWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op: %C.as.LeftShiftWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %LeftShiftWith.facet: %LeftShiftWith.type.d38 = facet_value %C, (%LeftShiftWith.impl_witness) [concrete] -// CHECK:STDOUT: %LeftShiftWith.WithSelf.Op.type.e66: type = fn_type @LeftShiftWith.WithSelf.Op, @LeftShiftWith.WithSelf(%C, %LeftShiftWith.facet) [concrete] +// CHECK:STDOUT: %LeftShiftWith.WithSelf.Op.type.f45: type = fn_type @LeftShiftWith.WithSelf.Op, @LeftShiftWith.WithSelf(%C, %LeftShiftWith.facet) [concrete] // CHECK:STDOUT: %LeftShiftAssignWith.type.e52: type = facet_type <@LeftShiftAssignWith, @LeftShiftAssignWith(%C)> [concrete] // CHECK:STDOUT: %LeftShiftAssignWith.impl_witness: = impl_witness @C.as.LeftShiftAssignWith.impl.%LeftShiftAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.LeftShiftAssignWith.impl.Op.type: type = fn_type @C.as.LeftShiftAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.LeftShiftAssignWith.impl.Op: %C.as.LeftShiftAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %LeftShiftAssignWith.facet: %LeftShiftAssignWith.type.e52 = facet_value %C, (%LeftShiftAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %LeftShiftAssignWith.WithSelf.Op.type.049: type = fn_type @LeftShiftAssignWith.WithSelf.Op, @LeftShiftAssignWith.WithSelf(%C, %LeftShiftAssignWith.facet) [concrete] -// CHECK:STDOUT: %.ff5: type = fn_type_with_self_type %LeftShiftWith.WithSelf.Op.type.e66, %LeftShiftWith.facet [concrete] +// CHECK:STDOUT: %.ed7: type = fn_type_with_self_type %LeftShiftWith.WithSelf.Op.type.f45, %LeftShiftWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.845: type = fn_type_with_self_type %LeftShiftAssignWith.WithSelf.Op.type.049, %LeftShiftAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.ff5 = impl_witness_access constants.%LeftShiftWith.impl_witness, element1 [concrete = constants.%C.as.LeftShiftWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.ed7 = impl_witness_access constants.%LeftShiftWith.impl_witness, element1 [concrete = constants.%C.as.LeftShiftWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.LeftShiftWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/mod.carbon b/toolchain/check/testdata/operators/overloaded/mod.carbon index 3e50b95646e2..61512dbb5054 100644 --- a/toolchain/check/testdata/operators/overloaded/mod.carbon +++ b/toolchain/check/testdata/operators/overloaded/mod.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.ModWith.impl.Op.type: type = fn_type @C.as.ModWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.ModWith.impl.Op: %C.as.ModWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %ModWith.facet: %ModWith.type.6a7 = facet_value %C, (%ModWith.impl_witness) [concrete] -// CHECK:STDOUT: %ModWith.WithSelf.Op.type.118: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%C, %ModWith.facet) [concrete] +// CHECK:STDOUT: %ModWith.WithSelf.Op.type.e12: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%C, %ModWith.facet) [concrete] // CHECK:STDOUT: %ModAssignWith.type.6e3: type = facet_type <@ModAssignWith, @ModAssignWith(%C)> [concrete] // CHECK:STDOUT: %ModAssignWith.impl_witness: = impl_witness @C.as.ModAssignWith.impl.%ModAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.ModAssignWith.impl.Op.type: type = fn_type @C.as.ModAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.ModAssignWith.impl.Op: %C.as.ModAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %ModAssignWith.facet: %ModAssignWith.type.6e3 = facet_value %C, (%ModAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %ModAssignWith.WithSelf.Op.type.849: type = fn_type @ModAssignWith.WithSelf.Op, @ModAssignWith.WithSelf(%C, %ModAssignWith.facet) [concrete] -// CHECK:STDOUT: %.4e6: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.118, %ModWith.facet [concrete] +// CHECK:STDOUT: %.3a9: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.e12, %ModWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.da5: type = fn_type_with_self_type %ModAssignWith.WithSelf.Op.type.849, %ModAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.4e6 = impl_witness_access constants.%ModWith.impl_witness, element1 [concrete = constants.%C.as.ModWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.3a9 = impl_witness_access constants.%ModWith.impl_witness, element1 [concrete = constants.%C.as.ModWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.ModWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/mul.carbon b/toolchain/check/testdata/operators/overloaded/mul.carbon index 3b7885aabbc5..5ae644d64201 100644 --- a/toolchain/check/testdata/operators/overloaded/mul.carbon +++ b/toolchain/check/testdata/operators/overloaded/mul.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.MulWith.impl.Op.type: type = fn_type @C.as.MulWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.MulWith.impl.Op: %C.as.MulWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %MulWith.facet: %MulWith.type.63d = facet_value %C, (%MulWith.impl_witness) [concrete] -// CHECK:STDOUT: %MulWith.WithSelf.Op.type.02d: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%C, %MulWith.facet) [concrete] +// CHECK:STDOUT: %MulWith.WithSelf.Op.type.8e0: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%C, %MulWith.facet) [concrete] // CHECK:STDOUT: %MulAssignWith.type.b55: type = facet_type <@MulAssignWith, @MulAssignWith(%C)> [concrete] // CHECK:STDOUT: %MulAssignWith.impl_witness: = impl_witness @C.as.MulAssignWith.impl.%MulAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.MulAssignWith.impl.Op.type: type = fn_type @C.as.MulAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.MulAssignWith.impl.Op: %C.as.MulAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %MulAssignWith.facet: %MulAssignWith.type.b55 = facet_value %C, (%MulAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %MulAssignWith.WithSelf.Op.type.1ae: type = fn_type @MulAssignWith.WithSelf.Op, @MulAssignWith.WithSelf(%C, %MulAssignWith.facet) [concrete] -// CHECK:STDOUT: %.36e: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.02d, %MulWith.facet [concrete] +// CHECK:STDOUT: %.a08: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.8e0, %MulWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.822: type = fn_type_with_self_type %MulAssignWith.WithSelf.Op.type.1ae, %MulAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.36e = impl_witness_access constants.%MulWith.impl_witness, element1 [concrete = constants.%C.as.MulWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.a08 = impl_witness_access constants.%MulWith.impl_witness, element1 [concrete = constants.%C.as.MulWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.MulWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/negate.carbon b/toolchain/check/testdata/operators/overloaded/negate.carbon index 1ab78724adbb..c52a472022d2 100644 --- a/toolchain/check/testdata/operators/overloaded/negate.carbon +++ b/toolchain/check/testdata/operators/overloaded/negate.carbon @@ -39,14 +39,14 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %C.as.Negate.impl.Op.type: type = fn_type @C.as.Negate.impl.Op [concrete] // CHECK:STDOUT: %C.as.Negate.impl.Op: %C.as.Negate.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value %C, (%Negate.impl_witness) [concrete] -// CHECK:STDOUT: %Negate.WithSelf.Op.type.0da: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] -// CHECK:STDOUT: %.962: type = fn_type_with_self_type %Negate.WithSelf.Op.type.0da, %Negate.facet [concrete] +// CHECK:STDOUT: %Negate.WithSelf.Op.type.d0c: type = fn_type @Negate.WithSelf.Op, @Negate.WithSelf(%Negate.facet) [concrete] +// CHECK:STDOUT: %.d14: type = fn_type_with_self_type %Negate.WithSelf.Op.type.d0c, %Negate.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp(%a.param: %C) -> out %return.param: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a -// CHECK:STDOUT: %impl.elem1: %.962 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%C.as.Negate.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.d14 = impl_witness_access constants.%Negate.impl_witness, element1 [concrete = constants.%C.as.Negate.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.Negate.impl.Op.call: init %C to %.loc27_20.1 = call %bound_method(%a.ref) diff --git a/toolchain/check/testdata/operators/overloaded/right_shift.carbon b/toolchain/check/testdata/operators/overloaded/right_shift.carbon index 40602fd662c0..e4e35665e973 100644 --- a/toolchain/check/testdata/operators/overloaded/right_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/right_shift.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.RightShiftWith.impl.Op.type: type = fn_type @C.as.RightShiftWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.RightShiftWith.impl.Op: %C.as.RightShiftWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %RightShiftWith.facet: %RightShiftWith.type.d7e = facet_value %C, (%RightShiftWith.impl_witness) [concrete] -// CHECK:STDOUT: %RightShiftWith.WithSelf.Op.type.0b1: type = fn_type @RightShiftWith.WithSelf.Op, @RightShiftWith.WithSelf(%C, %RightShiftWith.facet) [concrete] +// CHECK:STDOUT: %RightShiftWith.WithSelf.Op.type.ae6: type = fn_type @RightShiftWith.WithSelf.Op, @RightShiftWith.WithSelf(%C, %RightShiftWith.facet) [concrete] // CHECK:STDOUT: %RightShiftAssignWith.type.245: type = facet_type <@RightShiftAssignWith, @RightShiftAssignWith(%C)> [concrete] // CHECK:STDOUT: %RightShiftAssignWith.impl_witness: = impl_witness @C.as.RightShiftAssignWith.impl.%RightShiftAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.RightShiftAssignWith.impl.Op.type: type = fn_type @C.as.RightShiftAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.RightShiftAssignWith.impl.Op: %C.as.RightShiftAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %RightShiftAssignWith.facet: %RightShiftAssignWith.type.245 = facet_value %C, (%RightShiftAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %RightShiftAssignWith.WithSelf.Op.type.eea: type = fn_type @RightShiftAssignWith.WithSelf.Op, @RightShiftAssignWith.WithSelf(%C, %RightShiftAssignWith.facet) [concrete] -// CHECK:STDOUT: %.748: type = fn_type_with_self_type %RightShiftWith.WithSelf.Op.type.0b1, %RightShiftWith.facet [concrete] +// CHECK:STDOUT: %.fa6: type = fn_type_with_self_type %RightShiftWith.WithSelf.Op.type.ae6, %RightShiftWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.aad: type = fn_type_with_self_type %RightShiftAssignWith.WithSelf.Op.type.eea, %RightShiftAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.748 = impl_witness_access constants.%RightShiftWith.impl_witness, element1 [concrete = constants.%C.as.RightShiftWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.fa6 = impl_witness_access constants.%RightShiftWith.impl_witness, element1 [concrete = constants.%C.as.RightShiftWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.RightShiftWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/operators/overloaded/string_indexing.carbon b/toolchain/check/testdata/operators/overloaded/string_indexing.carbon index a042cd63bf94..01074e259d30 100644 --- a/toolchain/check/testdata/operators/overloaded/string_indexing.carbon +++ b/toolchain/check/testdata/operators/overloaded/string_indexing.carbon @@ -121,18 +121,18 @@ fn TestStringIndexing() { // CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [concrete] // CHECK:STDOUT: %ImplicitAs.type.221: type = facet_type <@ImplicitAs, @ImplicitAs(%i64)> [concrete] // CHECK:STDOUT: %T.2f3: %ImplicitAs.type.221 = symbolic_binding T, 0 [symbolic] -// CHECK:STDOUT: %str.as.IndexWith.impl.At.type.314: type = fn_type @str.as.IndexWith.impl.At, @str.as.IndexWith.impl(%T.2f3) [symbolic] -// CHECK:STDOUT: %str.as.IndexWith.impl.At.fa8: %str.as.IndexWith.impl.At.type.314 = struct_value () [symbolic] +// CHECK:STDOUT: %str.as.IndexWith.impl.At.type.b4f: type = fn_type @str.as.IndexWith.impl.At, @str.as.IndexWith.impl(%T.2f3) [symbolic] +// CHECK:STDOUT: %str.as.IndexWith.impl.At.53f: %str.as.IndexWith.impl.At.type.b4f = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.5a9: = impl_witness imports.%ImplicitAs.impl_witness_table.deb, @Core.IntLiteral.as.ImplicitAs.impl.0e9(%int_64) [concrete] // CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.221 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.5a9) [concrete] -// CHECK:STDOUT: %IndexWith.impl_witness.0e3: = impl_witness imports.%IndexWith.impl_witness_table, @str.as.IndexWith.impl(%ImplicitAs.facet) [concrete] -// CHECK:STDOUT: %str.as.IndexWith.impl.At.type.b0b: type = fn_type @str.as.IndexWith.impl.At, @str.as.IndexWith.impl(%ImplicitAs.facet) [concrete] -// CHECK:STDOUT: %str.as.IndexWith.impl.At.7f4: %str.as.IndexWith.impl.At.type.b0b = struct_value () [concrete] -// CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.385 = facet_value %str.3d4, (%IndexWith.impl_witness.0e3) [concrete] -// CHECK:STDOUT: %IndexWith.WithSelf.At.type.ad6: type = fn_type @IndexWith.WithSelf.At, @IndexWith.WithSelf(Core.IntLiteral, %IndexWith.facet) [concrete] -// CHECK:STDOUT: %.182: type = fn_type_with_self_type %IndexWith.WithSelf.At.type.ad6, %IndexWith.facet [concrete] -// CHECK:STDOUT: %str.as.IndexWith.impl.At.bound: = bound_method %String.val, %str.as.IndexWith.impl.At.7f4 [concrete] -// CHECK:STDOUT: %str.as.IndexWith.impl.At.specific_fn: = specific_function %str.as.IndexWith.impl.At.7f4, @str.as.IndexWith.impl.At(%ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %IndexWith.impl_witness.006: = impl_witness imports.%IndexWith.impl_witness_table, @str.as.IndexWith.impl(%ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %str.as.IndexWith.impl.At.type.53e: type = fn_type @str.as.IndexWith.impl.At, @str.as.IndexWith.impl(%ImplicitAs.facet) [concrete] +// CHECK:STDOUT: %str.as.IndexWith.impl.At.315: %str.as.IndexWith.impl.At.type.53e = struct_value () [concrete] +// CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.385 = facet_value %str.3d4, (%IndexWith.impl_witness.006) [concrete] +// CHECK:STDOUT: %IndexWith.WithSelf.At.type.5b7: type = fn_type @IndexWith.WithSelf.At, @IndexWith.WithSelf(Core.IntLiteral, %IndexWith.facet) [concrete] +// CHECK:STDOUT: %.100: type = fn_type_with_self_type %IndexWith.WithSelf.At.type.5b7, %IndexWith.facet [concrete] +// CHECK:STDOUT: %str.as.IndexWith.impl.At.bound: = bound_method %String.val, %str.as.IndexWith.impl.At.315 [concrete] +// CHECK:STDOUT: %str.as.IndexWith.impl.At.specific_fn: = specific_function %str.as.IndexWith.impl.At.315, @str.as.IndexWith.impl.At(%ImplicitAs.facet) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %String.val, %str.as.IndexWith.impl.At.specific_fn [concrete] // CHECK:STDOUT: %int_84: %char = int_value 84 [concrete] // CHECK:STDOUT: %d.patt: %pattern_type.2ff = value_binding_pattern d [concrete] @@ -142,8 +142,8 @@ fn TestStringIndexing() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.c1f = import_ref Core//prelude/types/string, loc{{\d+_\d+}}, unloaded -// CHECK:STDOUT: %Core.import_ref.f33: @str.as.IndexWith.impl.%str.as.IndexWith.impl.At.type (%str.as.IndexWith.impl.At.type.314) = import_ref Core//prelude/types/string, loc{{\d+_\d+}}, loaded [symbolic = @str.as.IndexWith.impl.%str.as.IndexWith.impl.At (constants.%str.as.IndexWith.impl.At.fa8)] -// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (%Core.import_ref.c1f, %Core.import_ref.f33), @str.as.IndexWith.impl [concrete] +// CHECK:STDOUT: %Core.import_ref.57a: @str.as.IndexWith.impl.%str.as.IndexWith.impl.At.type (%str.as.IndexWith.impl.At.type.b4f) = import_ref Core//prelude/types/string, loc{{\d+_\d+}}, loaded [symbolic = @str.as.IndexWith.impl.%str.as.IndexWith.impl.At (constants.%str.as.IndexWith.impl.At.53f)] +// CHECK:STDOUT: %IndexWith.impl_witness_table = impl_witness_table (%Core.import_ref.c1f, %Core.import_ref.57a), @str.as.IndexWith.impl [concrete] // CHECK:STDOUT: %Core.import_ref.838 = import_ref Core//prelude/types/int, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %ImplicitAs.impl_witness_table.deb = impl_witness_table (%Core.import_ref.838), @Core.IntLiteral.as.ImplicitAs.impl.0e9 [concrete] // CHECK:STDOUT: } @@ -154,7 +154,7 @@ fn TestStringIndexing() { // CHECK:STDOUT: %int_4.loc5: %u64 = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %String.val.loc5: %str.3d4 = struct_value (%str.loc5, %int_4.loc5) [concrete = constants.%String.val] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] -// CHECK:STDOUT: %impl.elem1.loc5: %.182 = impl_witness_access constants.%IndexWith.impl_witness.0e3, element1 [concrete = constants.%str.as.IndexWith.impl.At.7f4] +// CHECK:STDOUT: %impl.elem1.loc5: %.100 = impl_witness_access constants.%IndexWith.impl_witness.006, element1 [concrete = constants.%str.as.IndexWith.impl.At.315] // CHECK:STDOUT: %bound_method.loc5_32.1: = bound_method %String.val.loc5, %impl.elem1.loc5 [concrete = constants.%str.as.IndexWith.impl.At.bound] // CHECK:STDOUT: %ImplicitAs.facet.loc5_32.1: %ImplicitAs.type.221 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a9) [concrete = constants.%ImplicitAs.facet] // CHECK:STDOUT: %.loc5_32.1: %ImplicitAs.type.221 = converted Core.IntLiteral, %ImplicitAs.facet.loc5_32.1 [concrete = constants.%ImplicitAs.facet] @@ -174,7 +174,7 @@ fn TestStringIndexing() { // CHECK:STDOUT: %int_4.loc6: %u64 = int_value 4 [concrete = constants.%int_4] // CHECK:STDOUT: %String.val.loc6: %str.3d4 = struct_value (%str.loc6, %int_4.loc6) [concrete = constants.%String.val] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %impl.elem1.loc6: %.182 = impl_witness_access constants.%IndexWith.impl_witness.0e3, element1 [concrete = constants.%str.as.IndexWith.impl.At.7f4] +// CHECK:STDOUT: %impl.elem1.loc6: %.100 = impl_witness_access constants.%IndexWith.impl_witness.006, element1 [concrete = constants.%str.as.IndexWith.impl.At.315] // CHECK:STDOUT: %bound_method.loc6_32.1: = bound_method %String.val.loc6, %impl.elem1.loc6 [concrete = constants.%str.as.IndexWith.impl.At.bound] // CHECK:STDOUT: %ImplicitAs.facet.loc6_32.1: %ImplicitAs.type.221 = facet_value Core.IntLiteral, (constants.%ImplicitAs.impl_witness.5a9) [concrete = constants.%ImplicitAs.facet] // CHECK:STDOUT: %.loc6_32.1: %ImplicitAs.type.221 = converted Core.IntLiteral, %ImplicitAs.facet.loc6_32.1 [concrete = constants.%ImplicitAs.facet] diff --git a/toolchain/check/testdata/operators/overloaded/sub.carbon b/toolchain/check/testdata/operators/overloaded/sub.carbon index 018fb0e74f3f..c78499e9fafd 100644 --- a/toolchain/check/testdata/operators/overloaded/sub.carbon +++ b/toolchain/check/testdata/operators/overloaded/sub.carbon @@ -49,14 +49,14 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %C.as.SubWith.impl.Op.type: type = fn_type @C.as.SubWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.SubWith.impl.Op: %C.as.SubWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %SubWith.facet: %SubWith.type.3b5 = facet_value %C, (%SubWith.impl_witness) [concrete] -// CHECK:STDOUT: %SubWith.WithSelf.Op.type.928: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%C, %SubWith.facet) [concrete] +// CHECK:STDOUT: %SubWith.WithSelf.Op.type.eb1: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%C, %SubWith.facet) [concrete] // CHECK:STDOUT: %SubAssignWith.type.bf0: type = facet_type <@SubAssignWith, @SubAssignWith(%C)> [concrete] // CHECK:STDOUT: %SubAssignWith.impl_witness: = impl_witness @C.as.SubAssignWith.impl.%SubAssignWith.impl_witness_table [concrete] // CHECK:STDOUT: %C.as.SubAssignWith.impl.Op.type: type = fn_type @C.as.SubAssignWith.impl.Op [concrete] // CHECK:STDOUT: %C.as.SubAssignWith.impl.Op: %C.as.SubAssignWith.impl.Op.type = struct_value () [concrete] // CHECK:STDOUT: %SubAssignWith.facet: %SubAssignWith.type.bf0 = facet_value %C, (%SubAssignWith.impl_witness) [concrete] // CHECK:STDOUT: %SubAssignWith.WithSelf.Op.type.737: type = fn_type @SubAssignWith.WithSelf.Op, @SubAssignWith.WithSelf(%C, %SubAssignWith.facet) [concrete] -// CHECK:STDOUT: %.d45: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.928, %SubWith.facet [concrete] +// CHECK:STDOUT: %.9fe: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.eb1, %SubWith.facet [concrete] // CHECK:STDOUT: %ptr.00e: type = ptr_type %C [concrete] // CHECK:STDOUT: %.d38: type = fn_type_with_self_type %SubAssignWith.WithSelf.Op.type.737, %SubAssignWith.facet [concrete] // CHECK:STDOUT: } @@ -65,7 +65,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %.d45 = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%C.as.SubWith.impl.Op] +// CHECK:STDOUT: %impl.elem1: %.9fe = impl_witness_access constants.%SubWith.impl_witness, element1 [concrete = constants.%C.as.SubWith.impl.Op] // CHECK:STDOUT: %bound_method: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: // CHECK:STDOUT: %C.as.SubWith.impl.Op.call: init %C to %.loc30_26.1 = call %bound_method(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/packages/fail_export_name_params.carbon b/toolchain/check/testdata/packages/fail_export_name_params.carbon index 7dba1980e554..318ee20d467c 100644 --- a/toolchain/check/testdata/packages/fail_export_name_params.carbon +++ b/toolchain/check/testdata/packages/fail_export_name_params.carbon @@ -37,7 +37,7 @@ export C2(T:! type); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -56,7 +56,7 @@ export C2(T:! type); // CHECK:STDOUT: %T.patt.loc4_11.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_11.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_14.1: type = splice_block %.loc4_14.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_14.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc4_11.2: type = symbolic_binding T, 0 [symbolic = %T.loc4_11.1 (constants.%T)] @@ -65,7 +65,7 @@ export C2(T:! type); // CHECK:STDOUT: %T.patt.loc5_11.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_11.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc5_14.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc5_11.2: type = symbolic_binding T, 0 [symbolic = %T.loc5_11.1 (constants.%T)] @@ -105,7 +105,7 @@ export C2(T:! type); // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %C2.type: type = generic_class_type @C2 [concrete] // CHECK:STDOUT: %C2.generic: %C2.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -125,7 +125,7 @@ export C2(T:! type); // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C1: %C1.type = export C1, imports.%Foo.C1 [concrete = constants.%C1.generic] // CHECK:STDOUT: %.loc12_15.1: type = splice_block %.loc12_15.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc12_15.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T: type = symbolic_binding T, 0 [symbolic = constants.%T] diff --git a/toolchain/check/testdata/packages/missing_prelude.carbon b/toolchain/check/testdata/packages/missing_prelude.carbon index 5c1b19f1b54e..d4b88dec82df 100644 --- a/toolchain/check/testdata/packages/missing_prelude.carbon +++ b/toolchain/check/testdata/packages/missing_prelude.carbon @@ -193,7 +193,7 @@ let n: type = i32; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -241,12 +241,12 @@ let n: type = i32; // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X] // CHECK:STDOUT: %.loc6_35: Core.Form = init_form %X.ref [concrete = constants.%.7b0] // CHECK:STDOUT: %.loc6_12.1: type = splice_block %.loc6_12.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc6_9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_12.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_9.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_9.1 (constants.%T)] // CHECK:STDOUT: %.loc6_29: type = splice_block %T.ref [symbolic = %T.loc6_9.1 (constants.%T)] { -// CHECK:STDOUT: %.Self.loc6_26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_26: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_9.2 [symbolic = %T.loc6_9.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc6_26.2: @Int.%T.loc6_9.1 (%T) = symbolic_binding N, 1 [symbolic = %N.loc6_26.1 (constants.%N)] @@ -257,7 +257,7 @@ let n: type = i32; // CHECK:STDOUT: %T.patt.loc8_23.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_23.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_26.1: type = splice_block %.loc8_26.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc8_26.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc8_23.2: type = symbolic_binding T, 0 [symbolic = %T.loc8_23.1 (constants.%T)] @@ -624,7 +624,7 @@ let n: type = i32; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // 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] @@ -657,12 +657,12 @@ let n: type = i32; // CHECK:STDOUT: %N.patt.loc6_29.1: @Int.%pattern_type (%pattern_type.51d) = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc6_29.2 (constants.%N.patt.9f0)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_15.1: type = splice_block %.loc6_15.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc6_12: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_12: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_15.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc6_12.2: type = symbolic_binding T, 0 [symbolic = %T.loc6_12.1 (constants.%T)] // CHECK:STDOUT: %.loc6_32: type = splice_block %T.ref [symbolic = %T.loc6_12.1 (constants.%T)] { -// CHECK:STDOUT: %.Self.loc6_29: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc6_29: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc6_12.2 [symbolic = %T.loc6_12.1 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc6_29.2: @Int.%T.loc6_12.1 (%T) = symbolic_binding N, 1 [symbolic = %N.loc6_29.1 (constants.%N)] diff --git a/toolchain/check/testdata/patterns/underscore.carbon b/toolchain/check/testdata/patterns/underscore.carbon index e49d26f3666c..c5c7ad77b14d 100644 --- a/toolchain/check/testdata/patterns/underscore.carbon +++ b/toolchain/check/testdata/patterns/underscore.carbon @@ -293,7 +293,7 @@ fn F() -> {} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %_.patt: %pattern_type = symbolic_binding_pattern _, 0 [symbolic] // CHECK:STDOUT: %_: type = symbolic_binding _, 0 [symbolic] @@ -325,7 +325,7 @@ fn F() -> {} { // CHECK:STDOUT: %_.patt.loc4_7.1: %pattern_type = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc4_7.2 (constants.%_.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc4_7.2: type = symbolic_binding _, 0 [symbolic = %_.loc4_7.1 (constants.%_)] @@ -375,7 +375,7 @@ fn F() -> {} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %_.patt: %pattern_type = symbolic_binding_pattern _, 0 [symbolic] // CHECK:STDOUT: %_: type = symbolic_binding _, 0 [symbolic] @@ -407,7 +407,7 @@ fn F() -> {} { // CHECK:STDOUT: %_.patt.loc4_7.1: %pattern_type = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc4_7.2 (constants.%_.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc4_7.2: type = symbolic_binding _, 0 [symbolic = %_.loc4_7.1 (constants.%_)] @@ -448,7 +448,7 @@ fn F() -> {} { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type type [concrete] // CHECK:STDOUT: %_.patt: %pattern_type = symbolic_binding_pattern _, 0 [symbolic] // CHECK:STDOUT: %_: type = symbolic_binding _, 0 [symbolic] @@ -476,7 +476,7 @@ fn F() -> {} { // CHECK:STDOUT: %_.patt.loc4_7.1: %pattern_type = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc4_7.2 (constants.%_.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4_10.1: type = splice_block %.loc4_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc4_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc4_7.2: type = symbolic_binding _, 0 [symbolic = %_.loc4_7.1 (constants.%_)] @@ -485,7 +485,7 @@ fn F() -> {} { // CHECK:STDOUT: %_.patt.loc6_7.1: %pattern_type = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc6_7.2 (constants.%_.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc6_10.1: type = splice_block %.loc6_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc6_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %_.loc6_7.2: type = symbolic_binding _, 0 [symbolic = %_.loc6_7.1 (constants.%_)] diff --git a/toolchain/check/testdata/return/fail_let_in_type.carbon b/toolchain/check/testdata/return/fail_let_in_type.carbon index 9d7dea1abf36..40310094477f 100644 --- a/toolchain/check/testdata/return/fail_let_in_type.carbon +++ b/toolchain/check/testdata/return/fail_let_in_type.carbon @@ -56,7 +56,7 @@ fn FirstPerfectNumber() -> z { return 6; } // CHECK:STDOUT: %Six: %Six.type = struct_value () [concrete] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %y.patt: %pattern_type.98f = value_binding_pattern y [concrete] // CHECK:STDOUT: %HalfDozen.type: type = fn_type @HalfDozen [concrete] // CHECK:STDOUT: %HalfDozen: %HalfDozen.type = struct_value () [concrete] @@ -97,7 +97,7 @@ fn FirstPerfectNumber() -> z { return 6; } // CHECK:STDOUT: %return: = return_slot // CHECK:STDOUT: } // CHECK:STDOUT: %.loc27_9.1: type = splice_block %.loc27_9.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc27_9.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: type = wrapper_binding y, @__global_init.%i32.loc27 @@ -111,7 +111,7 @@ fn FirstPerfectNumber() -> z { return 6; } // CHECK:STDOUT: %return: = return_slot // CHECK:STDOUT: } // CHECK:STDOUT: %.loc39_18.1: type = splice_block %.loc39_18.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc39: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc39: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc39_18.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %z: type = wrapper_binding z, @__global_init.%i32.loc39 diff --git a/toolchain/check/testdata/return/import_convert_function.carbon b/toolchain/check/testdata/return/import_convert_function.carbon index 2775c4e8a530..bfbf6fffb313 100644 --- a/toolchain/check/testdata/return/import_convert_function.carbon +++ b/toolchain/check/testdata/return/import_convert_function.carbon @@ -52,7 +52,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] @@ -207,7 +207,7 @@ fn F0(unused n: i32) -> P.D { // CHECK:STDOUT: %N.patt.loc4_10.1: %pattern_type.6b6 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_10.2 (constants.%N.patt.38a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc4: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc4_10.2: %i32 = symbolic_binding N, 0 [symbolic = %N.loc4_10.1 (constants.%N.37f)] diff --git a/toolchain/check/testdata/where_expr/constraints.carbon b/toolchain/check/testdata/where_expr/constraints.carbon index b502bfa4a1f3..f789308e3362 100644 --- a/toolchain/check/testdata/where_expr/constraints.carbon +++ b/toolchain/check/testdata/where_expr/constraints.carbon @@ -189,9 +189,11 @@ fn F() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.9e9: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.9e9 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.3a0: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.3a0 [symbolic_self] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %pattern_type: type = pattern_type %I.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %I.type = symbolic_binding T, 0 [symbolic] @@ -206,16 +208,23 @@ fn F() { // CHECK:STDOUT: %T.patt.loc7_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc7_12.1: type = splice_block %.loc7_12.2 [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc7_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc7_12: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.loc7_12 [symbolic_self = constants.%.Self.9e9] +// CHECK:STDOUT: %.Self.frozen.loc7_12: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc7_18.1: %I.type = name_ref .Self, %.Self.frozen.loc7_12 [symbolic_self = constants.%.Self.frozen.3a0] // CHECK:STDOUT: %.loc7_30: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc7_18: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc7_18.1: type = facet_access_type %.Self.ref.loc7_18.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc7_18.1: type = converted %.Self.ref.loc7_18.1, %.Self.as_type.loc7_18.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc7_24.1 = requirement_impls %.loc7_18.1, %.loc7_30 [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc7_18.2: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc7_18.2: type = facet_access_type %.Self.ref.loc7_18.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc7_18.2: type = converted %.Self.ref.loc7_18.1, %.Self.as_type.loc7_18.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc7_24.2 = requirement_impls %.loc7_18.2, %.loc7_30 [concrete] // CHECK:STDOUT: %.loc7_12.2: type = where_expr [concrete = constants.%I.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_impls %.loc7_18, %.loc7_30 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %impls.loc7_24.2 = requirement_impls %.loc7_18.2, %.loc7_30 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc7_7.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc7_7.1 (constants.%T)] @@ -224,16 +233,23 @@ fn F() { // CHECK:STDOUT: %T.patt.loc13_7.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_7.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_12.1: type = splice_block %.loc13_12.2 [concrete = constants.%I.type] { -// CHECK:STDOUT: %.Self.loc13_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc13_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc13_12: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.loc13_12 [symbolic_self = constants.%.Self.9e9] +// CHECK:STDOUT: %.Self.frozen.loc13_12: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_18.1: %I.type = name_ref .Self, %.Self.frozen.loc13_12 [symbolic_self = constants.%.Self.frozen.3a0] // CHECK:STDOUT: %Type.ref: type = name_ref Type, file.%Type [concrete = type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc13_18: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc13_18.1: type = facet_access_type %.Self.ref.loc13_18.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc13_18.1: type = converted %.Self.ref.loc13_18.1, %.Self.as_type.loc13_18.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc13_24.1 = requirement_impls %.loc13_18.1, %Type.ref [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc13_18.2: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc13_18.2: type = facet_access_type %.Self.ref.loc13_18.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc13_18.2: type = converted %.Self.ref.loc13_18.1, %.Self.as_type.loc13_18.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc13_24.2 = requirement_impls %.loc13_18.2, %Type.ref [concrete] // CHECK:STDOUT: %.loc13_12.2: type = where_expr [concrete = constants.%I.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_impls %.loc13_18, %Type.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %impls.loc13_24.2 = requirement_impls %.loc13_18.2, %Type.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc13_7.2: %I.type = symbolic_binding T, 0 [symbolic = %T.loc13_7.1 (constants.%T)] @@ -269,9 +285,11 @@ fn F() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.9e9: %I.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.9e9 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.3a0: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.3a0 [symbolic_self] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -281,16 +299,23 @@ fn F() { // CHECK:STDOUT: %T.patt: = symbolic_binding_pattern T, 0 [concrete = ] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_12.1: type = splice_block %.loc14_12.2 [concrete = ] { -// CHECK:STDOUT: %.Self.loc14_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc14_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc14_12: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.loc14_12 [symbolic_self = constants.%.Self.9e9] +// CHECK:STDOUT: %.Self.frozen.loc14_12: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc14_18.1: %I.type = name_ref .Self, %.Self.frozen.loc14_12 [symbolic_self = constants.%.Self.frozen.3a0] // CHECK:STDOUT: %J.ref: = name_ref J, [concrete = ] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc14_18: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc14_18.1: type = facet_access_type %.Self.ref.loc14_18.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc14_18.1: type = converted %.Self.ref.loc14_18.1, %.Self.as_type.loc14_18.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc14_24.1 = requirement_impls %.loc14_18.1, [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc14_18.2: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc14_18.2: type = facet_access_type %.Self.ref.loc14_18.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc14_18.2: type = converted %.Self.ref.loc14_18.1, %.Self.as_type.loc14_18.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc14_24.2 = requirement_impls %.loc14_18.2, [concrete] // CHECK:STDOUT: %.loc14_12.2: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_impls %.loc14_18, +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %impls.loc14_24.2 = requirement_impls %.loc14_18.2, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T: = symbolic_binding T, 0 [concrete = ] @@ -311,27 +336,33 @@ fn F() { // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%Member [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.9e9: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.3a0: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.Self.f73: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %I_where.type.267: type = facet_type <@I where TODO> [concrete] // CHECK:STDOUT: %pattern_type.603: type = pattern_type %I_where.type.267 [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.603 = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U: %I_where.type.267 = symbolic_binding U, 0 [symbolic] // CHECK:STDOUT: %EqualEqual.type: type = fn_type @EqualEqual [concrete] // CHECK:STDOUT: %EqualEqual: %EqualEqual.type = struct_value () [concrete] -// CHECK:STDOUT: %.Self.d2f: %J.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type.29a: type = facet_access_type %.Self.d2f [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.99c: %J.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.8c8: type = facet_access_type %.Self.frozen.99c [symbolic_self] +// CHECK:STDOUT: %.Self.6ef: %J.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type.8c4: type = facet_access_type %.Self.6ef [symbolic_self] // CHECK:STDOUT: %J_where.type: type = facet_type <@J where .Self impls @I> [concrete] // CHECK:STDOUT: %pattern_type.17c: type = pattern_type %J_where.type [concrete] // CHECK:STDOUT: %V.patt: %pattern_type.17c = symbolic_binding_pattern V, 0 [symbolic] // CHECK:STDOUT: %V: %J_where.type = symbolic_binding V, 0 [symbolic] // CHECK:STDOUT: %Impls.type: type = fn_type @Impls [concrete] // CHECK:STDOUT: %Impls: %Impls.type = struct_value () [concrete] -// CHECK:STDOUT: %.Self.as_type.a2f: type = facet_access_type %.Self.9e9 [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self.9e9, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.e90: type = facet_access_type %.Self.frozen.3a0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen.3a0, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.as_type.f7e: type = facet_access_type %.Self.f73 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self.f73, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type.a1d: type = facet_type <@I where .Self impls @J and TODO> [concrete] // CHECK:STDOUT: %pattern_type.e37: type = pattern_type %I_where.type.a1d [concrete] // CHECK:STDOUT: %W.patt: %pattern_type.e37 = symbolic_binding_pattern W, 0 [symbolic] @@ -345,14 +376,19 @@ fn F() { // CHECK:STDOUT: %U.patt.loc12_16.1: %pattern_type.603 = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc12_16.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_21.1: type = splice_block %.loc12_21.2 [concrete = constants.%I_where.type.267] { -// CHECK:STDOUT: %.Self.loc12_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc12_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc12_21: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.loc12_21 [symbolic_self = constants.%.Self.9e9] +// CHECK:STDOUT: %.Self.frozen.loc12_21: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc12_27.1: %I.type = name_ref .Self, %.Self.frozen.loc12_21 [symbolic_self = constants.%.Self.frozen.3a0] // CHECK:STDOUT: %.loc12_37: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %equiv.loc12_33.1 = requirement_equivalent %.Self.ref.loc12_27.1, %.loc12_37 [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.f73] +// CHECK:STDOUT: %.Self.ref.loc12_27.2: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.f73] +// CHECK:STDOUT: %equiv.loc12_33.2 = requirement_equivalent %.Self.ref.loc12_27.2, %.loc12_37 [concrete] // CHECK:STDOUT: %.loc12_21.2: type = where_expr [concrete = constants.%I_where.type.267] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc12_37 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %equiv.loc12_33.2 = requirement_equivalent %.Self.ref.loc12_27.2, %.loc12_37 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc12_16.2: %I_where.type.267 = symbolic_binding U, 0 [symbolic = %U.loc12_16.1 (constants.%U)] @@ -361,16 +397,23 @@ fn F() { // CHECK:STDOUT: %V.patt.loc14_11.1: %pattern_type.17c = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc14_11.2 (constants.%V.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc14_16.1: type = splice_block %.loc14_16.2 [concrete = constants.%J_where.type] { -// CHECK:STDOUT: %.Self.loc14_11: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc14_11: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] -// CHECK:STDOUT: %.Self.loc14_16: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.d2f] -// CHECK:STDOUT: %.Self.ref: %J.type = name_ref .Self, %.Self.loc14_16 [symbolic_self = constants.%.Self.d2f] +// CHECK:STDOUT: %.Self.frozen.loc14_16: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.99c] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %J.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc14_22.1: %J.type = name_ref .Self, %.Self.frozen.loc14_16 [symbolic_self = constants.%.Self.frozen.99c] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type.29a] -// CHECK:STDOUT: %.loc14_22: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type.29a] +// CHECK:STDOUT: %.Self.as_type.loc14_22.1: type = facet_access_type %.Self.ref.loc14_22.1 [symbolic_self = constants.%.Self.frozen.as_type.8c8] +// CHECK:STDOUT: %.loc14_22.1: type = converted %.Self.ref.loc14_22.1, %.Self.as_type.loc14_22.1 [symbolic_self = constants.%.Self.frozen.as_type.8c8] +// CHECK:STDOUT: %impls.loc14_28.1 = requirement_impls %.loc14_22.1, %I.ref [concrete] +// CHECK:STDOUT: %.Self: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.6ef] +// CHECK:STDOUT: %.Self.ref.loc14_22.2: %J.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.6ef] +// CHECK:STDOUT: %.Self.as_type.loc14_22.2: type = facet_access_type %.Self.ref.loc14_22.2 [symbolic_self = constants.%.Self.as_type.8c4] +// CHECK:STDOUT: %.loc14_22.2: type = converted %.Self.ref.loc14_22.1, %.Self.as_type.loc14_22.2 [symbolic_self = constants.%.Self.as_type.8c4] +// CHECK:STDOUT: %impls.loc14_28.2 = requirement_impls %.loc14_22.2, %I.ref [concrete] // CHECK:STDOUT: %.loc14_16.2: type = where_expr [concrete = constants.%J_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %J.ref -// CHECK:STDOUT: requirement_impls %.loc14_22, %I.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %J.ref [concrete] +// CHECK:STDOUT: %impls.loc14_28.2 = requirement_impls %.loc14_22.2, %I.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc14_11.2: %J_where.type = symbolic_binding V, 0 [symbolic = %V.loc14_11.1 (constants.%V)] @@ -379,23 +422,33 @@ fn F() { // CHECK:STDOUT: %W.patt.loc16_9.1: %pattern_type.e37 = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc16_9.2 (constants.%W.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc16_14.1: type = splice_block %.loc16_14.2 [concrete = constants.%I_where.type.a1d] { -// CHECK:STDOUT: %.Self.loc16_9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc16_9: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc16_14: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref.loc16_20: %I.type = name_ref .Self, %.Self.loc16_14 [symbolic_self = constants.%.Self.9e9] +// CHECK:STDOUT: %.Self.frozen.loc16_14: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc16_20.1: %I.type = name_ref .Self, %.Self.frozen.loc16_14 [symbolic_self = constants.%.Self.frozen.3a0] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] -// CHECK:STDOUT: %.Self.as_type.loc16_20: type = facet_access_type %.Self.ref.loc16_20 [symbolic_self = constants.%.Self.as_type.a2f] -// CHECK:STDOUT: %.loc16_20: type = converted %.Self.ref.loc16_20, %.Self.as_type.loc16_20 [symbolic_self = constants.%.Self.as_type.a2f] -// CHECK:STDOUT: %.Self.ref.loc16_38: %I.type = name_ref .Self, %.Self.loc16_14 [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.as_type.loc16_38: type = facet_access_type %.Self.ref.loc16_38 [symbolic_self = constants.%.Self.as_type.a2f] -// CHECK:STDOUT: %.loc16_38: type = converted %.Self.ref.loc16_38, %.Self.as_type.loc16_38 [symbolic_self = constants.%.Self.as_type.a2f] +// CHECK:STDOUT: %.Self.as_type.loc16_20.1: type = facet_access_type %.Self.ref.loc16_20.1 [symbolic_self = constants.%.Self.frozen.as_type.e90] +// CHECK:STDOUT: %.loc16_20.1: type = converted %.Self.ref.loc16_20.1, %.Self.as_type.loc16_20.1 [symbolic_self = constants.%.Self.frozen.as_type.e90] +// CHECK:STDOUT: %impls.loc16_26.1 = requirement_impls %.loc16_20.1, %J.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc16_38: %I.type = name_ref .Self, %.Self.frozen.loc16_14 [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %.Self.as_type.loc16_38: type = facet_access_type %.Self.ref.loc16_38 [symbolic_self = constants.%.Self.frozen.as_type.e90] +// CHECK:STDOUT: %.loc16_38: type = converted %.Self.ref.loc16_38, %.Self.as_type.loc16_38 [symbolic_self = constants.%.Self.frozen.as_type.e90] // CHECK:STDOUT: %Member.ref: %I.assoc_type = name_ref Member, @Member.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc16_38.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc16_50: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %equiv.loc16_46.1 = requirement_equivalent %impl.elem0.loc16_38.1, %.loc16_50 [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.f73] +// CHECK:STDOUT: %.Self.ref.loc16_20.2: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.f73] +// CHECK:STDOUT: %.Self.as_type.loc16_20.2: type = facet_access_type %.Self.ref.loc16_20.2 [symbolic_self = constants.%.Self.as_type.f7e] +// CHECK:STDOUT: %.loc16_20.2: type = converted %.Self.ref.loc16_20.1, %.Self.as_type.loc16_20.2 [symbolic_self = constants.%.Self.as_type.f7e] +// CHECK:STDOUT: %impls.loc16_26.2 = requirement_impls %.loc16_20.2, %J.ref [concrete] +// CHECK:STDOUT: %impl.elem0.loc16_38.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %equiv.loc16_46.2 = requirement_equivalent %impl.elem0.loc16_38.2, %.loc16_50 [concrete] // CHECK:STDOUT: %.loc16_14.2: type = where_expr [concrete = constants.%I_where.type.a1d] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_impls %.loc16_20, %J.ref -// CHECK:STDOUT: requirement_equivalent %impl.elem0, %.loc16_50 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %impls.loc16_26.2 = requirement_impls %.loc16_20.2, %J.ref [concrete] +// CHECK:STDOUT: %equiv.loc16_46.2 = requirement_equivalent %impl.elem0.loc16_38.2, %.loc16_50 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc16_9.2: %I_where.type.a1d = symbolic_binding W, 0 [symbolic = %W.loc16_9.1 (constants.%W)] @@ -447,13 +500,17 @@ fn F() { // CHECK:STDOUT: %K.assoc_type: type = assoc_entity_type @K [concrete] // CHECK:STDOUT: %assoc0: %K.assoc_type = assoc_entity element0, @K.WithSelf.%Associated [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.613: %K.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.613 [symbolic_self] -// CHECK:STDOUT: %K.lookup_impl_witness: = lookup_impl_witness %.Self.613, @K [symbolic_self] -// CHECK:STDOUT: %impl.elem0: %L.type = impl_witness_access %K.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %as_type: type = facet_access_type %impl.elem0 [symbolic_self] -// CHECK:STDOUT: %K_where.type: type = facet_type <@K where %impl.elem0 impls @M> [concrete] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.b1d: %K.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.b1d [symbolic_self] +// CHECK:STDOUT: %K.lookup_impl_witness.46f: = lookup_impl_witness %.Self.frozen.b1d, @K [symbolic_self] +// CHECK:STDOUT: %impl.elem0.c97: %L.type = impl_witness_access %K.lookup_impl_witness.46f, element0 [symbolic_self] +// CHECK:STDOUT: %as_type.3da: type = facet_access_type %impl.elem0.c97 [symbolic_self] +// CHECK:STDOUT: %.Self: %K.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %K.lookup_impl_witness.4f0: = lookup_impl_witness %.Self, @K [symbolic_self] +// CHECK:STDOUT: %impl.elem0.819: %L.type = impl_witness_access %K.lookup_impl_witness.4f0, element0 [symbolic_self] +// CHECK:STDOUT: %as_type.75b: type = facet_access_type %impl.elem0.819 [symbolic_self] +// CHECK:STDOUT: %K_where.type: type = facet_type <@K where %impl.elem0.819 impls @M> [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %K_where.type [concrete] // CHECK:STDOUT: %W.patt: %pattern_type = symbolic_binding_pattern W, 0 [symbolic] // CHECK:STDOUT: %W: %K_where.type = symbolic_binding W, 0 [symbolic] @@ -466,20 +523,26 @@ fn F() { // CHECK:STDOUT: %W.patt.loc12_25.1: %pattern_type = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc12_25.2 (constants.%W.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_30.1: type = splice_block %.loc12_30.2 [concrete = constants.%K_where.type] { -// CHECK:STDOUT: %.Self.loc12_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc12_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %K.ref: type = name_ref K, file.%K.decl [concrete = constants.%K.type] -// CHECK:STDOUT: %.Self.loc12_30: %K.type = symbolic_binding .Self [symbolic_self = constants.%.Self.613] -// CHECK:STDOUT: %.Self.ref: %K.type = name_ref .Self, %.Self.loc12_30 [symbolic_self = constants.%.Self.613] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc12_36.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc12_30: %K.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.b1d] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %K.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %K.type = name_ref .Self, %.Self.frozen.loc12_30 [symbolic_self = constants.%.Self.frozen.b1d] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc12_36.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %Associated.ref: %K.assoc_type = name_ref Associated, @Associated.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %L.type = impl_witness_access constants.%K.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc12_36.1: %L.type = impl_witness_access constants.%K.lookup_impl_witness.46f, element0 [symbolic_self = constants.%impl.elem0.c97] // CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type] -// CHECK:STDOUT: %as_type: type = facet_access_type %impl.elem0 [symbolic_self = constants.%as_type] -// CHECK:STDOUT: %.loc12_36.2: type = converted %impl.elem0, %as_type [symbolic_self = constants.%as_type] +// CHECK:STDOUT: %as_type.loc12_36.1: type = facet_access_type %impl.elem0.loc12_36.1 [symbolic_self = constants.%as_type.3da] +// CHECK:STDOUT: %.loc12_36.2: type = converted %impl.elem0.loc12_36.1, %as_type.loc12_36.1 [symbolic_self = constants.%as_type.3da] +// CHECK:STDOUT: %impls.loc12_48.1 = requirement_impls %.loc12_36.2, %M.ref [concrete] +// CHECK:STDOUT: %impl.elem0.loc12_36.2: %L.type = impl_witness_access constants.%K.lookup_impl_witness.4f0, element0 [symbolic_self = constants.%impl.elem0.819] +// CHECK:STDOUT: %as_type.loc12_36.2: type = facet_access_type %impl.elem0.loc12_36.2 [symbolic_self = constants.%as_type.75b] +// CHECK:STDOUT: %.loc12_36.3: type = converted %impl.elem0.loc12_36.1, %as_type.loc12_36.2 [symbolic_self = constants.%as_type.75b] +// CHECK:STDOUT: %impls.loc12_48.2 = requirement_impls %.loc12_36.3, %M.ref [concrete] // CHECK:STDOUT: %.loc12_30.2: type = where_expr [concrete = constants.%K_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %K.ref -// CHECK:STDOUT: requirement_impls %.loc12_36.2, %M.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %K.ref [concrete] +// CHECK:STDOUT: %impls.loc12_48.2 = requirement_impls %.loc12_36.3, %M.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %W.loc12_25.2: %K_where.type = symbolic_binding W, 0 [symbolic = %W.loc12_25.1 (constants.%W)] @@ -502,6 +565,8 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] +// CHECK:STDOUT: %.Self.frozen: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen [symbolic_self] // CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] // CHECK:STDOUT: %WithError.type: type = fn_type @WithError [concrete] @@ -513,16 +578,23 @@ fn F() { // CHECK:STDOUT: %U.patt: = symbolic_binding_pattern U, 0 [concrete = ] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_23.1: type = splice_block %.loc9_23.2 [concrete = ] { -// CHECK:STDOUT: %.Self.loc9_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc9_15: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %.loc9_18: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.loc9_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self.loc9_23 [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.frozen.loc9_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc9_18 [concrete] +// CHECK:STDOUT: %.Self.ref.loc9_29.1: %type = name_ref .Self, %.Self.frozen.loc9_23 [symbolic_self = constants.%.Self.frozen] // CHECK:STDOUT: %I.ref: = name_ref I, [concrete = ] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_29: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.as_type.loc9_29.1: type = facet_access_type %.Self.ref.loc9_29.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_29.1: type = converted %.Self.ref.loc9_29.1, %.Self.as_type.loc9_29.1 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %impls.loc9_35.1 = requirement_impls %.loc9_29.1, [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.ref.loc9_29.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] +// CHECK:STDOUT: %.Self.as_type.loc9_29.2: type = facet_access_type %.Self.ref.loc9_29.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc9_29.2: type = converted %.Self.ref.loc9_29.1, %.Self.as_type.loc9_29.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc9_35.2 = requirement_impls %.loc9_29.2, [concrete] // CHECK:STDOUT: %.loc9_23.2: type = where_expr [concrete = ] { -// CHECK:STDOUT: requirement_base_facet_type %.loc9_18 -// CHECK:STDOUT: requirement_impls %.loc9_29, +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc9_18 [concrete] +// CHECK:STDOUT: %impls.loc9_35.2 = requirement_impls %.loc9_29.2, [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U: = symbolic_binding U, 0 [concrete = ] diff --git a/toolchain/check/testdata/where_expr/designator.carbon b/toolchain/check/testdata/where_expr/designator.carbon index 921b07af8848..38f3125600e4 100644 --- a/toolchain/check/testdata/where_expr/designator.carbon +++ b/toolchain/check/testdata/where_expr/designator.carbon @@ -277,24 +277,29 @@ fn F(unused T:! type where C impls N(.Self)) {} // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%Member [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.9e9: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.3a0: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %.Self.f73: %I.type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where TODO> [concrete] // CHECK:STDOUT: %pattern_type.603: type = pattern_type %I_where.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type.603 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %I_where.type = symbolic_binding T, 0 [symbolic] // CHECK:STDOUT: %PeriodSelf.type: type = fn_type @PeriodSelf [concrete] // CHECK:STDOUT: %PeriodSelf: %PeriodSelf.type = struct_value () [concrete] -// CHECK:STDOUT: %.Self.as_type.a2f: type = facet_access_type %.Self.9e9 [symbolic_self] -// CHECK:STDOUT: %I.lookup_impl_witness: = lookup_impl_witness %.Self.9e9, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.e90: type = facet_access_type %.Self.frozen.3a0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen.3a0, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self.f73, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: %U.patt: %pattern_type.603 = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %U: %I_where.type = symbolic_binding U, 0 [symbolic] // CHECK:STDOUT: %PeriodMember.type: type = fn_type @PeriodMember [concrete] // CHECK:STDOUT: %PeriodMember: %PeriodMember.type = struct_value () [concrete] -// CHECK:STDOUT: %.Self.as_type.246: type = facet_access_type %.Self.c39 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.bce: type = facet_access_type %.Self.frozen.197 [symbolic_self] +// CHECK:STDOUT: %.Self.e0b: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.e0b [symbolic_self] // CHECK:STDOUT: %type_where: type = facet_type [concrete] // CHECK:STDOUT: %pattern_type.951: type = pattern_type %type_where [concrete] // CHECK:STDOUT: %V.patt: %pattern_type.951 = symbolic_binding_pattern V, 0 [symbolic] @@ -308,14 +313,19 @@ fn F(unused T:! type where C impls N(.Self)) {} // CHECK:STDOUT: %T.patt.loc9_16.1: %pattern_type.603 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_16.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_21.1: type = splice_block %.loc9_21.2 [concrete = constants.%I_where.type] { -// CHECK:STDOUT: %.Self.loc9_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc9_16: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc9_21: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.loc9_21 [symbolic_self = constants.%.Self.9e9] +// CHECK:STDOUT: %.Self.frozen.loc9_21: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc9_27.1: %I.type = name_ref .Self, %.Self.frozen.loc9_21 [symbolic_self = constants.%.Self.frozen.3a0] // CHECK:STDOUT: %.loc9_37: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %equiv.loc9_33.1 = requirement_equivalent %.Self.ref.loc9_27.1, %.loc9_37 [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.f73] +// CHECK:STDOUT: %.Self.ref.loc9_27.2: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.f73] +// CHECK:STDOUT: %equiv.loc9_33.2 = requirement_equivalent %.Self.ref.loc9_27.2, %.loc9_37 [concrete] // CHECK:STDOUT: %.loc9_21.2: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc9_37 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %equiv.loc9_33.2 = requirement_equivalent %.Self.ref.loc9_27.2, %.loc9_37 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_16.2: %I_where.type = symbolic_binding T, 0 [symbolic = %T.loc9_16.1 (constants.%T)] @@ -324,18 +334,22 @@ fn F(unused T:! type where C impls N(.Self)) {} // CHECK:STDOUT: %U.patt.loc11_18.1: %pattern_type.603 = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc11_18.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_23.1: type = splice_block %.loc11_23.2 [concrete = constants.%I_where.type] { -// CHECK:STDOUT: %.Self.loc11_18: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc11_18: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.loc11_23: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.loc11_23 [symbolic_self = constants.%.Self.9e9] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type.a2f] -// CHECK:STDOUT: %.loc11_29: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type.a2f] +// CHECK:STDOUT: %.Self.frozen.loc11_23: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen.loc11_23 [symbolic_self = constants.%.Self.frozen.3a0] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type.e90] +// CHECK:STDOUT: %.loc11_29: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.e90] // CHECK:STDOUT: %Member.ref: %I.assoc_type = name_ref Member, @Member.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc11_29.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %.loc11_41: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %equiv.loc11_37.1 = requirement_equivalent %impl.elem0.loc11_29.1, %.loc11_41 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_29.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %equiv.loc11_37.2 = requirement_equivalent %impl.elem0.loc11_29.2, %.loc11_41 [concrete] // CHECK:STDOUT: %.loc11_23.2: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_equivalent %impl.elem0, %.loc11_41 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %equiv.loc11_37.2 = requirement_equivalent %impl.elem0.loc11_29.2, %.loc11_41 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U.loc11_18.2: %I_where.type = symbolic_binding U, 0 [symbolic = %U.loc11_18.1 (constants.%U)] @@ -344,16 +358,23 @@ fn F(unused T:! type where C impls N(.Self)) {} // CHECK:STDOUT: %V.patt.loc13_19.1: %pattern_type.951 = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc13_19.2 (constants.%V.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc13_27.1: type = splice_block %.loc13_27.2 [concrete = constants.%type_where] { -// CHECK:STDOUT: %.Self.loc13_19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc13_19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc13_22: type = type_literal type [concrete = type] -// CHECK:STDOUT: %.Self.loc13_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] -// CHECK:STDOUT: %.Self.ref: %type = name_ref .Self, %.Self.loc13_27 [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc13_27: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc13_22 [concrete] +// CHECK:STDOUT: %.Self.ref.loc13_33.1: %type = name_ref .Self, %.Self.frozen.loc13_27 [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type.246] -// CHECK:STDOUT: %.loc13_33: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type.246] +// CHECK:STDOUT: %.Self.as_type.loc13_33.1: type = facet_access_type %.Self.ref.loc13_33.1 [symbolic_self = constants.%.Self.frozen.as_type.bce] +// CHECK:STDOUT: %.loc13_33.1: type = converted %.Self.ref.loc13_33.1, %.Self.as_type.loc13_33.1 [symbolic_self = constants.%.Self.frozen.as_type.bce] +// CHECK:STDOUT: %impls.loc13_39.1 = requirement_impls %.loc13_33.1, %I.ref [concrete] +// CHECK:STDOUT: %.Self: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.e0b] +// CHECK:STDOUT: %.Self.ref.loc13_33.2: %type = name_ref .Self, %.Self [symbolic_self = constants.%.Self.e0b] +// CHECK:STDOUT: %.Self.as_type.loc13_33.2: type = facet_access_type %.Self.ref.loc13_33.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.loc13_33.2: type = converted %.Self.ref.loc13_33.1, %.Self.as_type.loc13_33.2 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %impls.loc13_39.2 = requirement_impls %.loc13_33.2, %I.ref [concrete] // CHECK:STDOUT: %.loc13_27.2: type = where_expr [concrete = constants.%type_where] { -// CHECK:STDOUT: requirement_base_facet_type %.loc13_22 -// CHECK:STDOUT: requirement_impls %.loc13_33, %I.ref +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %.loc13_22 [concrete] +// CHECK:STDOUT: %impls.loc13_39.2 = requirement_impls %.loc13_33.2, %I.ref [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc13_19.2: %type_where = symbolic_binding V, 0 [symbolic = %V.loc13_19.1 (constants.%V)] diff --git a/toolchain/check/testdata/where_expr/dot_self_index.carbon b/toolchain/check/testdata/where_expr/dot_self_index.carbon index 299314df1ade..9ec3fe7da828 100644 --- a/toolchain/check/testdata/where_expr/dot_self_index.carbon +++ b/toolchain/check/testdata/where_expr/dot_self_index.carbon @@ -29,82 +29,92 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Empty.type.c52: type = generic_interface_type @Empty [concrete] // CHECK:STDOUT: %Empty.generic: %Empty.type.c52 = struct_value () [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: %Empty.type.95d624.2: type = facet_type <@Empty, @Empty(%T)> [symbolic] -// CHECK:STDOUT: %.Self.b11: %Empty.type.95d624.2 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %.Self.frozen.063: %Empty.type.95d624.2 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %Empty.assoc_type.c44b55.2: type = assoc_entity_type @Empty, @Empty(%T) [symbolic] // CHECK:STDOUT: %assoc0.3a7cb1.2: %Empty.assoc_type.c44b55.2 = assoc_entity element0, @Empty.WithSelf.%A [symbolic] // CHECK:STDOUT: %require_complete.a43: = require_complete_type %Empty.type.95d624.2 [symbolic] -// CHECK:STDOUT: %.Self.as_type.c7e: type = facet_access_type %.Self.b11 [symbolic] -// CHECK:STDOUT: %Empty.lookup_impl_witness.14f: = lookup_impl_witness %.Self.b11, @Empty, @Empty(%T) [symbolic] -// CHECK:STDOUT: %impl.elem0.cd8: type = impl_witness_access %Empty.lookup_impl_witness.14f, element0 [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type.f3f: type = facet_access_type %.Self.frozen.063 [symbolic] +// CHECK:STDOUT: %Empty.lookup_impl_witness.88a: = lookup_impl_witness %.Self.frozen.063, @Empty, @Empty(%T) [symbolic] +// CHECK:STDOUT: %impl.elem0.c2e: type = impl_witness_access %Empty.lookup_impl_witness.88a, element0 [symbolic] // CHECK:STDOUT: %ptr.e8f: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %Empty_where.type.e78: type = facet_type <@Empty, @Empty(%T) where %impl.elem0.cd8 = %ptr.e8f> [symbolic] -// CHECK:STDOUT: %pattern_type.eb8: type = pattern_type %Empty_where.type.e78 [symbolic] -// CHECK:STDOUT: %U.param_patt.10f: %pattern_type.eb8 = value_param_pattern [symbolic] -// CHECK:STDOUT: %U.patt.b11: %pattern_type.eb8 = at_binding_pattern U, %U.param_patt.10f [symbolic] +// CHECK:STDOUT: %.Self.913: %Empty.type.95d624.2 = symbolic_binding .Self [symbolic] +// CHECK:STDOUT: %Empty.lookup_impl_witness.67b: = lookup_impl_witness %.Self.913, @Empty, @Empty(%T) [symbolic] +// CHECK:STDOUT: %impl.elem0.d8a: type = impl_witness_access %Empty.lookup_impl_witness.67b, element0 [symbolic] +// CHECK:STDOUT: %Empty_where.type.696: type = facet_type <@Empty, @Empty(%T) where %impl.elem0.d8a = %ptr.e8f> [symbolic] +// CHECK:STDOUT: %pattern_type.a0f: type = pattern_type %Empty_where.type.696 [symbolic] +// CHECK:STDOUT: %U.param_patt.558: %pattern_type.a0f = value_param_pattern [symbolic] +// CHECK:STDOUT: %U.patt.e03: %pattern_type.a0f = at_binding_pattern U, %U.param_patt.558 [symbolic] // CHECK:STDOUT: %V.patt: %pattern_type.98f = symbolic_binding_pattern V, 1 [symbolic] // CHECK:STDOUT: %V: type = symbolic_binding V, 1 [symbolic] // CHECK:STDOUT: %H.type: type = fn_type @H [concrete] // CHECK:STDOUT: %H: %H.type = struct_value () [concrete] -// CHECK:STDOUT: %require_complete.ee8: = require_complete_type %Empty_where.type.e78 [symbolic] +// CHECK:STDOUT: %require_complete.e98: = require_complete_type %Empty_where.type.696 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Empty.type.39c: type = facet_type <@Empty, @Empty(%i32)> [concrete] -// CHECK:STDOUT: %.Self.21a: %Empty.type.39c = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.869: %Empty.type.39c = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Empty.assoc_type.22b: type = assoc_entity_type @Empty, @Empty(%i32) [concrete] // CHECK:STDOUT: %assoc0.023: %Empty.assoc_type.22b = assoc_entity element0, @Empty.WithSelf.%A [concrete] -// CHECK:STDOUT: %.Self.as_type.22a: type = facet_access_type %.Self.21a [symbolic_self] -// CHECK:STDOUT: %Empty.lookup_impl_witness.873: = lookup_impl_witness %.Self.21a, @Empty, @Empty(%i32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.1e1: type = impl_witness_access %Empty.lookup_impl_witness.873, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type.941: type = facet_access_type %.Self.frozen.869 [symbolic_self] +// CHECK:STDOUT: %Empty.lookup_impl_witness.635: = lookup_impl_witness %.Self.frozen.869, @Empty, @Empty(%i32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.31d: type = impl_witness_access %Empty.lookup_impl_witness.635, element0 [symbolic_self] // CHECK:STDOUT: %ptr.d08: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %Empty_where.type.2e4: type = facet_type <@Empty, @Empty(%i32) where %impl.elem0.1e1 = %ptr.d08> [concrete] -// CHECK:STDOUT: %pattern_type.ce6: type = pattern_type %Empty_where.type.2e4 [concrete] -// CHECK:STDOUT: %U.param_patt.57b: %pattern_type.ce6 = value_param_pattern [concrete] +// CHECK:STDOUT: %.Self.98b: %Empty.type.39c = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %Empty.lookup_impl_witness.4f6: = lookup_impl_witness %.Self.98b, @Empty, @Empty(%i32) [symbolic_self] +// CHECK:STDOUT: %impl.elem0.f25: type = impl_witness_access %Empty.lookup_impl_witness.4f6, element0 [symbolic_self] +// CHECK:STDOUT: %Empty_where.type.944: type = facet_type <@Empty, @Empty(%i32) where %impl.elem0.f25 = %ptr.d08> [concrete] +// CHECK:STDOUT: %pattern_type.12c: type = pattern_type %Empty_where.type.944 [concrete] +// CHECK:STDOUT: %U.param_patt.a6a: %pattern_type.12c = value_param_pattern [concrete] // CHECK:STDOUT: %complete_type.c56: = complete_type_witness %Empty.type.39c [concrete] -// CHECK:STDOUT: %U.patt.a9b134.2: %pattern_type.ce6 = at_binding_pattern U, %U.param_patt.57b [concrete] -// CHECK:STDOUT: %complete_type.6eb: = complete_type_witness %Empty_where.type.2e4 [concrete] +// CHECK:STDOUT: %U.patt.616e51.2: %pattern_type.12c = at_binding_pattern U, %U.param_patt.a6a [concrete] +// CHECK:STDOUT: %complete_type.c21: = complete_type_witness %Empty_where.type.944 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] { // CHECK:STDOUT: %T.patt.loc21_7.1: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_7.2 (constants.%T.patt)] -// CHECK:STDOUT: %U.param_patt.loc21_24.1: @H.%pattern_type (%pattern_type.eb8) = value_param_pattern [symbolic = %U.param_patt.loc21_24.2 (constants.%U.param_patt.10f)] -// CHECK:STDOUT: %U.patt.loc21_24.1: @H.%pattern_type (%pattern_type.eb8) = at_binding_pattern U, %U.param_patt.loc21_24.1 [symbolic = %U.patt.loc21_24.2 (constants.%U.patt.b11)] +// CHECK:STDOUT: %U.param_patt.loc21_24.1: @H.%pattern_type (%pattern_type.a0f) = value_param_pattern [symbolic = %U.param_patt.loc21_24.2 (constants.%U.param_patt.558)] +// CHECK:STDOUT: %U.patt.loc21_24.1: @H.%pattern_type (%pattern_type.a0f) = at_binding_pattern U, %U.param_patt.loc21_24.1 [symbolic = %U.patt.loc21_24.2 (constants.%U.patt.e03)] // CHECK:STDOUT: %V.patt.loc21_58.1: %pattern_type.98f = symbolic_binding_pattern V, 1 [symbolic = %V.patt.loc21_58.2 (constants.%V.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc21_10.1: type = splice_block %.loc21_10.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc21_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc21_7: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc21_10.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc21_7.2: type = symbolic_binding T, 0 [symbolic = %T.loc21_7.1 (constants.%T)] -// CHECK:STDOUT: %U.param: @H.%Empty_where.type (%Empty_where.type.e78) = value_param call_param0 -// CHECK:STDOUT: %.loc21_35.1: type = splice_block %.loc21_35.2 [symbolic = %Empty_where.type (constants.%Empty_where.type.e78)] { +// CHECK:STDOUT: %U.param: @H.%Empty_where.type (%Empty_where.type.696) = value_param call_param0 +// CHECK:STDOUT: %.loc21_35.1: type = splice_block %.loc21_35.2 [symbolic = %Empty_where.type (constants.%Empty_where.type.696)] { // CHECK:STDOUT: %Empty.ref: %Empty.type.c52 = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.generic] // CHECK:STDOUT: %T.ref.loc21_32: type = name_ref T, %T.loc21_7.2 [symbolic = %T.loc21_7.1 (constants.%T)] // CHECK:STDOUT: %Empty.type.loc21_33.2: type = facet_type <@Empty, @Empty(constants.%T)> [symbolic = %Empty.type.loc21_33.1 (constants.%Empty.type.95d624.2)] -// CHECK:STDOUT: %.Self.loc21_35.2: @H.%Empty.type.loc21_33.1 (%Empty.type.95d624.2) = symbolic_binding .Self [symbolic = %.Self.loc21_35.1 (constants.%.Self.b11)] -// CHECK:STDOUT: %.Self.ref: @H.%Empty.type.loc21_33.1 (%Empty.type.95d624.2) = name_ref .Self, %.Self.loc21_35.2 [symbolic = %.Self.loc21_35.1 (constants.%.Self.b11)] -// CHECK:STDOUT: %.Self.as_type.loc21_41.2: type = facet_access_type %.Self.ref [symbolic = %.Self.as_type.loc21_41.1 (constants.%.Self.as_type.c7e)] -// CHECK:STDOUT: %.loc21_41.1: type = converted %.Self.ref, %.Self.as_type.loc21_41.2 [symbolic = %.Self.as_type.loc21_41.1 (constants.%.Self.as_type.c7e)] -// CHECK:STDOUT: %.loc21_41.2: @H.%Empty.assoc_type (%Empty.assoc_type.c44b55.2) = specific_constant @A.%assoc0, @Empty.WithSelf(constants.%T, constants.%.Self.b11) [symbolic = %assoc0 (constants.%assoc0.3a7cb1.2)] +// CHECK:STDOUT: %.Self.frozen.loc21_35.2: @H.%Empty.type.loc21_33.1 (%Empty.type.95d624.2) = symbolic_binding .Self [symbolic = %.Self.frozen.loc21_35.1 (constants.%.Self.frozen.063)] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Empty.type.loc21_33.2 [concrete] +// CHECK:STDOUT: %.Self.ref: @H.%Empty.type.loc21_33.1 (%Empty.type.95d624.2) = name_ref .Self, %.Self.frozen.loc21_35.2 [symbolic = %.Self.frozen.loc21_35.1 (constants.%.Self.frozen.063)] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.f3f)] +// CHECK:STDOUT: %.loc21_41.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.f3f)] +// CHECK:STDOUT: %.loc21_41.2: @H.%Empty.assoc_type (%Empty.assoc_type.c44b55.2) = specific_constant @A.%assoc0, @Empty.WithSelf(constants.%T, constants.%.Self.frozen.063) [symbolic = %assoc0 (constants.%assoc0.3a7cb1.2)] // CHECK:STDOUT: %A.ref: @H.%Empty.assoc_type (%Empty.assoc_type.c44b55.2) = name_ref A, %.loc21_41.2 [symbolic = %assoc0 (constants.%assoc0.3a7cb1.2)] -// CHECK:STDOUT: %impl.elem0.loc21_41.2: type = impl_witness_access constants.%Empty.lookup_impl_witness.14f, element0 [symbolic = %impl.elem0.loc21_41.1 (constants.%impl.elem0.cd8)] +// CHECK:STDOUT: %impl.elem0.loc21_41.3: type = impl_witness_access constants.%Empty.lookup_impl_witness.88a, element0 [symbolic = %impl.elem0.loc21_41.1 (constants.%impl.elem0.c2e)] // CHECK:STDOUT: %T.ref.loc21_46: type = name_ref T, %T.loc21_7.2 [symbolic = %T.loc21_7.1 (constants.%T)] // CHECK:STDOUT: %ptr.loc21_47.2: type = ptr_type %T.ref.loc21_46 [symbolic = %ptr.loc21_47.1 (constants.%ptr.e8f)] -// CHECK:STDOUT: %.loc21_35.2: type = where_expr [symbolic = %Empty_where.type (constants.%Empty_where.type.e78)] { -// CHECK:STDOUT: requirement_base_facet_type %Empty.type.loc21_33.2 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc21_41.2, %ptr.loc21_47.2 +// CHECK:STDOUT: %rewrite.loc21_44.1 = requirement_rewrite %impl.elem0.loc21_41.3, %ptr.loc21_47.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc21_41.4: type = impl_witness_access constants.%Empty.lookup_impl_witness.67b, element0 [symbolic = %impl.elem0.loc21_41.2 (constants.%impl.elem0.d8a)] +// CHECK:STDOUT: %rewrite.loc21_44.2 = requirement_rewrite %impl.elem0.loc21_41.4, %ptr.loc21_47.2 [concrete] +// CHECK:STDOUT: %.loc21_35.2: type = where_expr [symbolic = %Empty_where.type (constants.%Empty_where.type.696)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Empty.type.loc21_33.2 [concrete] +// CHECK:STDOUT: %rewrite.loc21_44.2 = requirement_rewrite %impl.elem0.loc21_41.4, %ptr.loc21_47.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %U: @H.%Empty_where.type (%Empty_where.type.e78) = wrapper_binding U, %U.param +// CHECK:STDOUT: %U: @H.%Empty_where.type (%Empty_where.type.696) = wrapper_binding U, %U.param // CHECK:STDOUT: %.loc21_61.1: type = splice_block %.loc21_61.2 [concrete = type] { -// CHECK:STDOUT: %.Self.loc21_58: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc21_58: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %.loc21_61.2: type = type_literal type [concrete = type] // CHECK:STDOUT: } // CHECK:STDOUT: %V.loc21_58.2: type = symbolic_binding V, 1 [symbolic = %V.loc21_58.1 (constants.%V)] @@ -115,25 +125,28 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %T.patt.loc21_7.2: %pattern_type.98f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_7.2 (constants.%T.patt)] // CHECK:STDOUT: %T.loc21_7.1: type = symbolic_binding T, 0 [symbolic = %T.loc21_7.1 (constants.%T)] // CHECK:STDOUT: %Empty.type.loc21_33.1: type = facet_type <@Empty, @Empty(%T.loc21_7.1)> [symbolic = %Empty.type.loc21_33.1 (constants.%Empty.type.95d624.2)] -// CHECK:STDOUT: %.Self.loc21_35.1: @H.%Empty.type.loc21_33.1 (%Empty.type.95d624.2) = symbolic_binding .Self [symbolic = %.Self.loc21_35.1 (constants.%.Self.b11)] +// CHECK:STDOUT: %.Self.frozen.loc21_35.1: @H.%Empty.type.loc21_33.1 (%Empty.type.95d624.2) = symbolic_binding .Self [symbolic = %.Self.frozen.loc21_35.1 (constants.%.Self.frozen.063)] // CHECK:STDOUT: %require_complete.loc21_41: = require_complete_type %Empty.type.loc21_33.1 [symbolic = %require_complete.loc21_41 (constants.%require_complete.a43)] -// CHECK:STDOUT: %.Self.as_type.loc21_41.1: type = facet_access_type %.Self.loc21_35.1 [symbolic = %.Self.as_type.loc21_41.1 (constants.%.Self.as_type.c7e)] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc21_35.1 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.f3f)] // CHECK:STDOUT: %Empty.assoc_type: type = assoc_entity_type @Empty, @Empty(%T.loc21_7.1) [symbolic = %Empty.assoc_type (constants.%Empty.assoc_type.c44b55.2)] // CHECK:STDOUT: %assoc0: @H.%Empty.assoc_type (%Empty.assoc_type.c44b55.2) = assoc_entity element0, @Empty.WithSelf.%A [symbolic = %assoc0 (constants.%assoc0.3a7cb1.2)] -// CHECK:STDOUT: %Empty.lookup_impl_witness: = lookup_impl_witness %.Self.loc21_35.1, @Empty, @Empty(%T.loc21_7.1) [symbolic = %Empty.lookup_impl_witness (constants.%Empty.lookup_impl_witness.14f)] -// CHECK:STDOUT: %impl.elem0.loc21_41.1: type = impl_witness_access %Empty.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_41.1 (constants.%impl.elem0.cd8)] +// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_41.1: = lookup_impl_witness %.Self.frozen.loc21_35.1, @Empty, @Empty(%T.loc21_7.1) [symbolic = %Empty.lookup_impl_witness.loc21_41.1 (constants.%Empty.lookup_impl_witness.88a)] +// CHECK:STDOUT: %impl.elem0.loc21_41.1: type = impl_witness_access %Empty.lookup_impl_witness.loc21_41.1, element0 [symbolic = %impl.elem0.loc21_41.1 (constants.%impl.elem0.c2e)] // CHECK:STDOUT: %ptr.loc21_47.1: type = ptr_type %T.loc21_7.1 [symbolic = %ptr.loc21_47.1 (constants.%ptr.e8f)] -// CHECK:STDOUT: %Empty_where.type: type = facet_type <@Empty, @Empty(%T.loc21_7.1) where %impl.elem0.loc21_41.1 = %ptr.loc21_47.1> [symbolic = %Empty_where.type (constants.%Empty_where.type.e78)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Empty_where.type [symbolic = %pattern_type (constants.%pattern_type.eb8)] -// CHECK:STDOUT: %U.param_patt.loc21_24.2: @H.%pattern_type (%pattern_type.eb8) = value_param_pattern [symbolic = %U.param_patt.loc21_24.2 (constants.%U.param_patt.10f)] -// CHECK:STDOUT: %U.patt.loc21_24.2: @H.%pattern_type (%pattern_type.eb8) = at_binding_pattern U, %U.param_patt.loc21_24.2 [symbolic = %U.patt.loc21_24.2 (constants.%U.patt.b11)] +// CHECK:STDOUT: %.Self: @H.%Empty.type.loc21_33.1 (%Empty.type.95d624.2) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.913)] +// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_41.2: = lookup_impl_witness %.Self, @Empty, @Empty(%T.loc21_7.1) [symbolic = %Empty.lookup_impl_witness.loc21_41.2 (constants.%Empty.lookup_impl_witness.67b)] +// CHECK:STDOUT: %impl.elem0.loc21_41.2: type = impl_witness_access %Empty.lookup_impl_witness.loc21_41.2, element0 [symbolic = %impl.elem0.loc21_41.2 (constants.%impl.elem0.d8a)] +// CHECK:STDOUT: %Empty_where.type: type = facet_type <@Empty, @Empty(%T.loc21_7.1) where %impl.elem0.loc21_41.2 = %ptr.loc21_47.1> [symbolic = %Empty_where.type (constants.%Empty_where.type.696)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Empty_where.type [symbolic = %pattern_type (constants.%pattern_type.a0f)] +// CHECK:STDOUT: %U.param_patt.loc21_24.2: @H.%pattern_type (%pattern_type.a0f) = value_param_pattern [symbolic = %U.param_patt.loc21_24.2 (constants.%U.param_patt.558)] +// CHECK:STDOUT: %U.patt.loc21_24.2: @H.%pattern_type (%pattern_type.a0f) = at_binding_pattern U, %U.param_patt.loc21_24.2 [symbolic = %U.patt.loc21_24.2 (constants.%U.patt.e03)] // CHECK:STDOUT: %V.patt.loc21_58.2: %pattern_type.98f = symbolic_binding_pattern V, 1 [symbolic = %V.patt.loc21_58.2 (constants.%V.patt)] // CHECK:STDOUT: %V.loc21_58.1: type = symbolic_binding V, 1 [symbolic = %V.loc21_58.1 (constants.%V)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc21_24: = require_complete_type %Empty_where.type [symbolic = %require_complete.loc21_24 (constants.%require_complete.ee8)] +// CHECK:STDOUT: %require_complete.loc21_24: = require_complete_type %Empty_where.type [symbolic = %require_complete.loc21_24 (constants.%require_complete.e98)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%U.param: @H.%Empty_where.type (%Empty_where.type.e78)) { +// CHECK:STDOUT: fn(%U.param: @H.%Empty_where.type (%Empty_where.type.696)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: @@ -145,18 +158,21 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %T.patt.loc21_7.2 => constants.%T.patt // CHECK:STDOUT: %T.loc21_7.1 => constants.%T // CHECK:STDOUT: %Empty.type.loc21_33.1 => constants.%Empty.type.95d624.2 -// CHECK:STDOUT: %.Self.loc21_35.1 => constants.%.Self.b11 +// CHECK:STDOUT: %.Self.frozen.loc21_35.1 => constants.%.Self.frozen.063 // CHECK:STDOUT: %require_complete.loc21_41 => constants.%require_complete.a43 -// CHECK:STDOUT: %.Self.as_type.loc21_41.1 => constants.%.Self.as_type.c7e +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.f3f // CHECK:STDOUT: %Empty.assoc_type => constants.%Empty.assoc_type.c44b55.2 // CHECK:STDOUT: %assoc0 => constants.%assoc0.3a7cb1.2 -// CHECK:STDOUT: %Empty.lookup_impl_witness => constants.%Empty.lookup_impl_witness.14f -// CHECK:STDOUT: %impl.elem0.loc21_41.1 => constants.%impl.elem0.cd8 +// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_41.1 => constants.%Empty.lookup_impl_witness.88a +// CHECK:STDOUT: %impl.elem0.loc21_41.1 => constants.%impl.elem0.c2e // CHECK:STDOUT: %ptr.loc21_47.1 => constants.%ptr.e8f -// CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.e78 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.eb8 -// CHECK:STDOUT: %U.param_patt.loc21_24.2 => constants.%U.param_patt.10f -// CHECK:STDOUT: %U.patt.loc21_24.2 => constants.%U.patt.b11 +// CHECK:STDOUT: %.Self => constants.%.Self.913 +// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_41.2 => constants.%Empty.lookup_impl_witness.67b +// CHECK:STDOUT: %impl.elem0.loc21_41.2 => constants.%impl.elem0.d8a +// CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.696 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.a0f +// CHECK:STDOUT: %U.param_patt.loc21_24.2 => constants.%U.param_patt.558 +// CHECK:STDOUT: %U.patt.loc21_24.2 => constants.%U.patt.e03 // CHECK:STDOUT: %V.patt.loc21_58.2 => constants.%V.patt // CHECK:STDOUT: %V.loc21_58.1 => constants.%V // CHECK:STDOUT: } @@ -165,22 +181,25 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %T.patt.loc21_7.2 => constants.%T.patt // CHECK:STDOUT: %T.loc21_7.1 => constants.%i32 // CHECK:STDOUT: %Empty.type.loc21_33.1 => constants.%Empty.type.39c -// CHECK:STDOUT: %.Self.loc21_35.1 => constants.%.Self.21a +// CHECK:STDOUT: %.Self.frozen.loc21_35.1 => constants.%.Self.frozen.869 // CHECK:STDOUT: %require_complete.loc21_41 => constants.%complete_type.c56 -// CHECK:STDOUT: %.Self.as_type.loc21_41.1 => constants.%.Self.as_type.22a +// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.941 // CHECK:STDOUT: %Empty.assoc_type => constants.%Empty.assoc_type.22b // CHECK:STDOUT: %assoc0 => constants.%assoc0.023 -// CHECK:STDOUT: %Empty.lookup_impl_witness => constants.%Empty.lookup_impl_witness.873 -// CHECK:STDOUT: %impl.elem0.loc21_41.1 => constants.%impl.elem0.1e1 +// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_41.1 => constants.%Empty.lookup_impl_witness.635 +// CHECK:STDOUT: %impl.elem0.loc21_41.1 => constants.%impl.elem0.31d // CHECK:STDOUT: %ptr.loc21_47.1 => constants.%ptr.d08 -// CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.2e4 -// CHECK:STDOUT: %pattern_type => constants.%pattern_type.ce6 -// CHECK:STDOUT: %U.param_patt.loc21_24.2 => constants.%U.param_patt.57b -// CHECK:STDOUT: %U.patt.loc21_24.2 => constants.%U.patt.a9b134.2 +// CHECK:STDOUT: %.Self => constants.%.Self.98b +// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_41.2 => constants.%Empty.lookup_impl_witness.4f6 +// CHECK:STDOUT: %impl.elem0.loc21_41.2 => constants.%impl.elem0.f25 +// CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.944 +// CHECK:STDOUT: %pattern_type => constants.%pattern_type.12c +// CHECK:STDOUT: %U.param_patt.loc21_24.2 => constants.%U.param_patt.a6a +// CHECK:STDOUT: %U.patt.loc21_24.2 => constants.%U.patt.616e51.2 // CHECK:STDOUT: %V.patt.loc21_58.2 => constants.%V.patt // CHECK:STDOUT: %V.loc21_58.1 => bool // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc21_24 => constants.%complete_type.6eb +// CHECK:STDOUT: %require_complete.loc21_24 => constants.%complete_type.c21 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/where_expr/equal_rewrite.carbon b/toolchain/check/testdata/where_expr/equal_rewrite.carbon index 715622764c94..64ad855ad22f 100644 --- a/toolchain/check/testdata/where_expr/equal_rewrite.carbon +++ b/toolchain/check/testdata/where_expr/equal_rewrite.carbon @@ -228,14 +228,17 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %N.assoc_type: type = assoc_entity_type @N [concrete] // CHECK:STDOUT: %assoc0: %N.assoc_type = assoc_entity element0, @N.WithSelf.%P [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.b4b: %N.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.b4b [symbolic_self] -// CHECK:STDOUT: %N.lookup_impl_witness: = lookup_impl_witness %.Self.b4b, @N [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %N.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.098: %N.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.098 [symbolic_self] +// CHECK:STDOUT: %N.lookup_impl_witness.e97: = lookup_impl_witness %.Self.frozen.098, @N [symbolic_self] +// CHECK:STDOUT: %impl.elem0.892: type = impl_witness_access %N.lookup_impl_witness.e97, element0 [symbolic_self] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete] -// CHECK:STDOUT: %N_where.type: type = facet_type <@N where %impl.elem0 = %empty_struct_type> [concrete] +// CHECK:STDOUT: %.Self: %N.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %N.lookup_impl_witness.98e: = lookup_impl_witness %.Self, @N [symbolic_self] +// CHECK:STDOUT: %impl.elem0.48c: type = impl_witness_access %N.lookup_impl_witness.98e, element0 [symbolic_self] +// CHECK:STDOUT: %N_where.type: type = facet_type <@N where %impl.elem0.48c = %empty_struct_type> [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %N_where.type [concrete] // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T: %N_where.type = symbolic_binding T, 0 [symbolic] @@ -248,19 +251,23 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %T.patt.loc9_11.1: %pattern_type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_11.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_16.1: type = splice_block %.loc9_16.2 [concrete = constants.%N_where.type] { -// CHECK:STDOUT: %.Self.loc9_11: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc9_11: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %N.ref: type = name_ref N, file.%N.decl [concrete = constants.%N.type] -// CHECK:STDOUT: %.Self.loc9_16: %N.type = symbolic_binding .Self [symbolic_self = constants.%.Self.b4b] -// CHECK:STDOUT: %.Self.ref: %N.type = name_ref .Self, %.Self.loc9_16 [symbolic_self = constants.%.Self.b4b] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_22: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc9_16: %N.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.098] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %N.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %N.type = name_ref .Self, %.Self.frozen.loc9_16 [symbolic_self = constants.%.Self.frozen.098] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_22: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %P.ref: %N.assoc_type = name_ref P, @P.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%N.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc9_22.1: type = impl_witness_access constants.%N.lookup_impl_witness.e97, element0 [symbolic_self = constants.%impl.elem0.892] // CHECK:STDOUT: %.loc9_28.1: %empty_struct_type = struct_literal () [concrete = constants.%empty_struct] // CHECK:STDOUT: %.loc9_28.2: type = converted %.loc9_28.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %rewrite.loc9_25.1 = requirement_rewrite %impl.elem0.loc9_22.1, %.loc9_28.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc9_22.2: type = impl_witness_access constants.%N.lookup_impl_witness.98e, element0 [symbolic_self = constants.%impl.elem0.48c] +// CHECK:STDOUT: %rewrite.loc9_25.2 = requirement_rewrite %impl.elem0.loc9_22.2, %.loc9_28.2 [concrete] // CHECK:STDOUT: %.loc9_16.2: type = where_expr [concrete = constants.%N_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %N.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc9_28.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %N.ref [concrete] +// CHECK:STDOUT: %rewrite.loc9_25.2 = requirement_rewrite %impl.elem0.loc9_22.2, %.loc9_28.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc9_11.2: %N_where.type = symbolic_binding T, 0 [symbolic = %T.loc9_11.1 (constants.%T)] @@ -287,19 +294,23 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %assoc0: %A.assoc_type = assoc_entity element0, @A.WithSelf.%B [concrete] // CHECK:STDOUT: %assoc1: %A.assoc_type = assoc_entity element1, @A.WithSelf.%C [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.dad: %A.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.dad [symbolic_self] -// CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self.dad, @A [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic_self] -// CHECK:STDOUT: %A_where.type.23b: type = facet_type <@A where %impl.elem0 = bool> [concrete] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %A.lookup_impl_witness, element1 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.d4e: %A.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.d4e [symbolic_self] +// CHECK:STDOUT: %A.lookup_impl_witness.5db: = lookup_impl_witness %.Self.frozen.d4e, @A [symbolic_self] +// CHECK:STDOUT: %impl.elem0.6ea: type = impl_witness_access %A.lookup_impl_witness.5db, element0 [symbolic_self] +// CHECK:STDOUT: %.Self: %A.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %A.lookup_impl_witness.937: = lookup_impl_witness %.Self, @A [symbolic_self] +// CHECK:STDOUT: %impl.elem0.0e0: type = impl_witness_access %A.lookup_impl_witness.937, element0 [symbolic_self] +// CHECK:STDOUT: %A_where.type.beb: type = facet_type <@A where %impl.elem0.0e0 = bool> [concrete] +// CHECK:STDOUT: %impl.elem1.06a: type = impl_witness_access %A.lookup_impl_witness.5db, element1 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %A_where.type.879: type = facet_type <@A where %impl.elem0 = bool and %impl.elem1 = %empty_tuple.type> [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type.879 [concrete] +// CHECK:STDOUT: %impl.elem1.844: type = impl_witness_access %A.lookup_impl_witness.937, element1 [symbolic_self] +// CHECK:STDOUT: %A_where.type.0ba: type = facet_type <@A where %impl.elem0.0e0 = bool and %impl.elem1.844 = %empty_tuple.type> [concrete] +// CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type.0ba [concrete] // CHECK:STDOUT: %D.patt: %pattern_type = symbolic_binding_pattern D, 0 [symbolic] -// CHECK:STDOUT: %D: %A_where.type.879 = symbolic_binding D, 0 [symbolic] +// CHECK:STDOUT: %D: %A_where.type.0ba = symbolic_binding D, 0 [symbolic] // CHECK:STDOUT: %NestedRewrite.type: type = fn_type @NestedRewrite [concrete] // CHECK:STDOUT: %NestedRewrite: %NestedRewrite.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -308,40 +319,48 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %NestedRewrite.decl: %NestedRewrite.type = fn_decl @NestedRewrite [concrete = constants.%NestedRewrite] { // CHECK:STDOUT: %D.patt.loc10_19.1: %pattern_type = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc10_19.2 (constants.%D.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10_42.1: type = splice_block %.loc10_42.2 [concrete = constants.%A_where.type.879] { -// CHECK:STDOUT: %.Self.loc10_19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.loc10_42.1: type = splice_block %.loc10_42.2 [concrete = constants.%A_where.type.0ba] { +// CHECK:STDOUT: %.Self.frozen.loc10_19: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type] -// CHECK:STDOUT: %.Self.loc10_25: %A.type = symbolic_binding .Self [symbolic_self = constants.%.Self.dad] -// CHECK:STDOUT: %.Self.ref.loc10_31: %A.type = name_ref .Self, %.Self.loc10_25 [symbolic_self = constants.%.Self.dad] -// CHECK:STDOUT: %.Self.as_type.loc10_31: type = facet_access_type %.Self.ref.loc10_31 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_31: type = converted %.Self.ref.loc10_31, %.Self.as_type.loc10_31 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc10_25: %A.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.d4e] +// CHECK:STDOUT: %base_facet_type.loc10_25 = requirement_base_facet_type %A.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_31: %A.type = name_ref .Self, %.Self.frozen.loc10_25 [symbolic_self = constants.%.Self.frozen.d4e] +// CHECK:STDOUT: %.Self.as_type.loc10_31: type = facet_access_type %.Self.ref.loc10_31 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_31: type = converted %.Self.ref.loc10_31, %.Self.as_type.loc10_31 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %B.ref: %A.assoc_type = name_ref B, @B.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%A.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_31.1: type = impl_witness_access constants.%A.lookup_impl_witness.5db, element0 [symbolic_self = constants.%impl.elem0.6ea] // CHECK:STDOUT: %.loc10_36: type = type_literal bool [concrete = bool] -// CHECK:STDOUT: %.loc10_25: type = where_expr [concrete = constants.%A_where.type.23b] { -// CHECK:STDOUT: requirement_base_facet_type %A.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_36 +// CHECK:STDOUT: %rewrite.loc10_34.1 = requirement_rewrite %impl.elem0.loc10_31.1, %.loc10_36 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_31.2: type = impl_witness_access constants.%A.lookup_impl_witness.937, element0 [symbolic_self = constants.%impl.elem0.0e0] +// CHECK:STDOUT: %rewrite.loc10_34.2 = requirement_rewrite %impl.elem0.loc10_31.2, %.loc10_36 [concrete] +// CHECK:STDOUT: %.loc10_25: type = where_expr [concrete = constants.%A_where.type.beb] { +// CHECK:STDOUT: %base_facet_type.loc10_25 = requirement_base_facet_type %A.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_34.2 = requirement_rewrite %impl.elem0.loc10_31.2, %.loc10_36 [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %.Self.loc10_42: %A.type = symbolic_binding .Self [symbolic_self = constants.%.Self.dad] -// CHECK:STDOUT: %.Self.ref.loc10_48: %A.type = name_ref .Self, %.Self.loc10_42 [symbolic_self = constants.%.Self.dad] -// CHECK:STDOUT: %.Self.as_type.loc10_48: type = facet_access_type %.Self.ref.loc10_48 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_48: type = converted %.Self.ref.loc10_48, %.Self.as_type.loc10_48 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc10_42: %A.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.d4e] +// CHECK:STDOUT: %base_facet_type.loc10_42 = requirement_base_facet_type %.loc10_25 [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_48: %A.type = name_ref .Self, %.Self.frozen.loc10_42 [symbolic_self = constants.%.Self.frozen.d4e] +// CHECK:STDOUT: %.Self.as_type.loc10_48: type = facet_access_type %.Self.ref.loc10_48 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_48: type = converted %.Self.ref.loc10_48, %.Self.as_type.loc10_48 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %C.ref: %A.assoc_type = name_ref C, @C.%assoc1 [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%A.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] +// CHECK:STDOUT: %impl.elem1.loc10_48.1: type = impl_witness_access constants.%A.lookup_impl_witness.5db, element1 [symbolic_self = constants.%impl.elem1.06a] // CHECK:STDOUT: %.loc10_54.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_54.2: type = converted %.loc10_54.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc10_42.2: type = where_expr [concrete = constants.%A_where.type.879] { -// CHECK:STDOUT: requirement_base_facet_type %.loc10_25 -// CHECK:STDOUT: requirement_rewrite %impl.elem1, %.loc10_54.2 +// CHECK:STDOUT: %rewrite.loc10_51.1 = requirement_rewrite %impl.elem1.loc10_48.1, %.loc10_54.2 [concrete] +// CHECK:STDOUT: %impl.elem1.loc10_48.2: type = impl_witness_access constants.%A.lookup_impl_witness.937, element1 [symbolic_self = constants.%impl.elem1.844] +// CHECK:STDOUT: %rewrite.loc10_51.2 = requirement_rewrite %impl.elem1.loc10_48.2, %.loc10_54.2 [concrete] +// CHECK:STDOUT: %.loc10_42.2: type = where_expr [concrete = constants.%A_where.type.0ba] { +// CHECK:STDOUT: %base_facet_type.loc10_42 = requirement_base_facet_type %.loc10_25 [concrete] +// CHECK:STDOUT: %rewrite.loc10_51.2 = requirement_rewrite %impl.elem1.loc10_48.2, %.loc10_54.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %D.loc10_19.2: %A_where.type.879 = symbolic_binding D, 0 [symbolic = %D.loc10_19.1 (constants.%D)] +// CHECK:STDOUT: %D.loc10_19.2: %A_where.type.0ba = symbolic_binding D, 0 [symbolic = %D.loc10_19.1 (constants.%D)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @NestedRewrite(%D.loc10_19.2: %A_where.type.879) { +// CHECK:STDOUT: generic fn @NestedRewrite(%D.loc10_19.2: %A_where.type.0ba) { // CHECK:STDOUT: %D.patt.loc10_19.2: %pattern_type = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc10_19.2 (constants.%D.patt)] -// CHECK:STDOUT: %D.loc10_19.1: %A_where.type.879 = symbolic_binding D, 0 [symbolic = %D.loc10_19.1 (constants.%D)] +// CHECK:STDOUT: %D.loc10_19.1: %A_where.type.0ba = symbolic_binding D, 0 [symbolic = %D.loc10_19.1 (constants.%D)] // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -358,72 +377,87 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %E.assoc_type: type = assoc_entity_type @E [concrete] // CHECK:STDOUT: %assoc0: %E.assoc_type = assoc_entity element0, @E.WithSelf.%F [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.2bc: %E.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.2bc [symbolic_self] -// CHECK:STDOUT: %E.lookup_impl_witness: = lookup_impl_witness %.Self.2bc, @E [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %E.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.64b: %E.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.64b [symbolic_self] +// CHECK:STDOUT: %E.lookup_impl_witness.b1b: = lookup_impl_witness %.Self.frozen.64b, @E [symbolic_self] +// CHECK:STDOUT: %impl.elem0.efe: type = impl_witness_access %E.lookup_impl_witness.b1b, element0 [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %E_where.type: type = facet_type <@E where %impl.elem0 = %i32> [concrete] -// CHECK:STDOUT: %pattern_type.97c: type = pattern_type %E_where.type [concrete] -// CHECK:STDOUT: %G.patt: %pattern_type.97c = symbolic_binding_pattern G, 0 [symbolic] +// CHECK:STDOUT: %.Self: %E.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %E.lookup_impl_witness.8bd: = lookup_impl_witness %.Self, @E [symbolic_self] +// CHECK:STDOUT: %impl.elem0.554: type = impl_witness_access %E.lookup_impl_witness.8bd, element0 [symbolic_self] +// CHECK:STDOUT: %E_where.type: type = facet_type <@E where %impl.elem0.554 = %i32> [concrete] +// CHECK:STDOUT: %pattern_type.b73: type = pattern_type %E_where.type [concrete] +// CHECK:STDOUT: %G.patt: %pattern_type.b73 = symbolic_binding_pattern G, 0 [symbolic] // CHECK:STDOUT: %G: %E_where.type = symbolic_binding G, 0 [symbolic] // CHECK:STDOUT: %OneRewrite.type: type = fn_type @OneRewrite [concrete] // CHECK:STDOUT: %OneRewrite: %OneRewrite.type = struct_value () [concrete] -// CHECK:STDOUT: %H.patt: %pattern_type.97c = symbolic_binding_pattern H, 0 [symbolic] +// CHECK:STDOUT: %H.patt: %pattern_type.b73 = symbolic_binding_pattern H, 0 [symbolic] // CHECK:STDOUT: %H: %E_where.type = symbolic_binding H, 0 [symbolic] // CHECK:STDOUT: %RepeatedRewrite.type: type = fn_type @RepeatedRewrite [concrete] // CHECK:STDOUT: %RepeatedRewrite: %RepeatedRewrite.type = struct_value () [concrete] // CHECK:STDOUT: %I: %E_where.type = symbolic_binding I, 0 [symbolic] -// CHECK:STDOUT: %OneRewrite.specific_fn.324e27.2: = specific_function %OneRewrite, @OneRewrite(%I) [symbolic] +// CHECK:STDOUT: %OneRewrite.specific_fn.ba0394.2: = specific_function %OneRewrite, @OneRewrite(%I) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: %OneRewrite.decl: %OneRewrite.type = fn_decl @OneRewrite [concrete = constants.%OneRewrite] { -// CHECK:STDOUT: %G.patt.loc9_23.1: %pattern_type.97c = symbolic_binding_pattern G, 0 [symbolic = %G.patt.loc9_23.2 (constants.%G.patt)] +// CHECK:STDOUT: %G.patt.loc9_23.1: %pattern_type.b73 = symbolic_binding_pattern G, 0 [symbolic = %G.patt.loc9_23.2 (constants.%G.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc9_28.1: type = splice_block %.loc9_28.2 [concrete = constants.%E_where.type] { -// CHECK:STDOUT: %.Self.loc9_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc9_23: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %E.ref: type = name_ref E, file.%E.decl [concrete = constants.%E.type] -// CHECK:STDOUT: %.Self.loc9_28: %E.type = symbolic_binding .Self [symbolic_self = constants.%.Self.2bc] -// CHECK:STDOUT: %.Self.ref: %E.type = name_ref .Self, %.Self.loc9_28 [symbolic_self = constants.%.Self.2bc] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc9_34: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc9_28: %E.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.64b] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %E.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %E.type = name_ref .Self, %.Self.frozen.loc9_28 [symbolic_self = constants.%.Self.frozen.64b] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_34: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %F.ref: %E.assoc_type = name_ref F, @F.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%E.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc9_34.1: type = impl_witness_access constants.%E.lookup_impl_witness.b1b, element0 [symbolic_self = constants.%impl.elem0.efe] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: %rewrite.loc9_37.1 = requirement_rewrite %impl.elem0.loc9_34.1, %i32 [concrete] +// CHECK:STDOUT: %impl.elem0.loc9_34.2: type = impl_witness_access constants.%E.lookup_impl_witness.8bd, element0 [symbolic_self = constants.%impl.elem0.554] +// CHECK:STDOUT: %rewrite.loc9_37.2 = requirement_rewrite %impl.elem0.loc9_34.2, %i32 [concrete] // CHECK:STDOUT: %.loc9_28.2: type = where_expr [concrete = constants.%E_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %E.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %E.ref [concrete] +// CHECK:STDOUT: %rewrite.loc9_37.2 = requirement_rewrite %impl.elem0.loc9_34.2, %i32 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %G.loc9_23.2: %E_where.type = symbolic_binding G, 0 [symbolic = %G.loc9_23.1 (constants.%G)] // CHECK:STDOUT: } // CHECK:STDOUT: %RepeatedRewrite.decl: %RepeatedRewrite.type = fn_decl @RepeatedRewrite [concrete = constants.%RepeatedRewrite] { -// CHECK:STDOUT: %H.patt.loc11_21.1: %pattern_type.97c = symbolic_binding_pattern H, 0 [symbolic = %H.patt.loc11_21.2 (constants.%H.patt)] +// CHECK:STDOUT: %H.patt.loc11_21.1: %pattern_type.b73 = symbolic_binding_pattern H, 0 [symbolic = %H.patt.loc11_21.2 (constants.%H.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_26.1: type = splice_block %.loc11_26.2 [concrete = constants.%E_where.type] { -// CHECK:STDOUT: %.Self.loc11_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc11_21: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %E.ref: type = name_ref E, file.%E.decl [concrete = constants.%E.type] -// CHECK:STDOUT: %.Self.loc11_26: %E.type = symbolic_binding .Self [symbolic_self = constants.%.Self.2bc] -// CHECK:STDOUT: %.Self.ref.loc11_32: %E.type = name_ref .Self, %.Self.loc11_26 [symbolic_self = constants.%.Self.2bc] -// CHECK:STDOUT: %.Self.as_type.loc11_32: type = facet_access_type %.Self.ref.loc11_32 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc11_32: type = converted %.Self.ref.loc11_32, %.Self.as_type.loc11_32 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc11_26: %E.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.64b] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %E.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc11_32: %E.type = name_ref .Self, %.Self.frozen.loc11_26 [symbolic_self = constants.%.Self.frozen.64b] +// CHECK:STDOUT: %.Self.as_type.loc11_32: type = facet_access_type %.Self.ref.loc11_32 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_32: type = converted %.Self.ref.loc11_32, %.Self.as_type.loc11_32 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %F.ref.loc11_32: %E.assoc_type = name_ref F, @F.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc11_32: type = impl_witness_access constants.%E.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc11_32.1: type = impl_witness_access constants.%E.lookup_impl_witness.b1b, element0 [symbolic_self = constants.%impl.elem0.efe] // CHECK:STDOUT: %i32.loc11_37: type = type_literal constants.%i32 [concrete = constants.%i32] -// CHECK:STDOUT: %.Self.ref.loc11_45: %E.type = name_ref .Self, %.Self.loc11_26 [symbolic_self = constants.%.Self.2bc] -// CHECK:STDOUT: %.Self.as_type.loc11_45: type = facet_access_type %.Self.ref.loc11_45 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc11_45: type = converted %.Self.ref.loc11_45, %.Self.as_type.loc11_45 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc11_35.1 = requirement_rewrite %impl.elem0.loc11_32.1, %i32.loc11_37 [concrete] +// CHECK:STDOUT: %.Self.ref.loc11_45: %E.type = name_ref .Self, %.Self.frozen.loc11_26 [symbolic_self = constants.%.Self.frozen.64b] +// CHECK:STDOUT: %.Self.as_type.loc11_45: type = facet_access_type %.Self.ref.loc11_45 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_45: type = converted %.Self.ref.loc11_45, %.Self.as_type.loc11_45 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %F.ref.loc11_45: %E.assoc_type = name_ref F, @F.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc11_45: type = impl_witness_access constants.%E.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] -// CHECK:STDOUT: %impl.elem0.subst: type = impl_witness_access_substituted %impl.elem0.loc11_45, %i32.loc11_37 [concrete = constants.%i32] +// CHECK:STDOUT: %impl.elem0.loc11_45.1: type = impl_witness_access constants.%E.lookup_impl_witness.b1b, element0 [symbolic_self = constants.%impl.elem0.efe] +// CHECK:STDOUT: %impl.elem0.subst.loc11_45.1: type = impl_witness_access_substituted %impl.elem0.loc11_45.1, %i32.loc11_37 [concrete = constants.%i32] // CHECK:STDOUT: %i32.loc11_50: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: %rewrite.loc11_48.1 = requirement_rewrite %impl.elem0.subst.loc11_45.1, %i32.loc11_50 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_32.2: type = impl_witness_access constants.%E.lookup_impl_witness.8bd, element0 [symbolic_self = constants.%impl.elem0.554] +// CHECK:STDOUT: %rewrite.loc11_35.2 = requirement_rewrite %impl.elem0.loc11_32.2, %i32.loc11_37 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_45.2: type = impl_witness_access constants.%E.lookup_impl_witness.8bd, element0 [symbolic_self = constants.%impl.elem0.554] +// CHECK:STDOUT: %impl.elem0.subst.loc11_45.2: type = impl_witness_access_substituted %impl.elem0.loc11_45.2, %i32.loc11_37 [concrete = constants.%i32] +// CHECK:STDOUT: %rewrite.loc11_48.2 = requirement_rewrite %impl.elem0.subst.loc11_45.2, %i32.loc11_50 [concrete] // CHECK:STDOUT: %.loc11_26.2: type = where_expr [concrete = constants.%E_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %E.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc11_32, %i32.loc11_37 -// CHECK:STDOUT: requirement_rewrite %impl.elem0.subst, %i32.loc11_50 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %E.ref [concrete] +// CHECK:STDOUT: %rewrite.loc11_35.2 = requirement_rewrite %impl.elem0.loc11_32.2, %i32.loc11_37 [concrete] +// CHECK:STDOUT: %rewrite.loc11_48.2 = requirement_rewrite %impl.elem0.subst.loc11_45.2, %i32.loc11_50 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %H.loc11_21.2: %E_where.type = symbolic_binding H, 0 [symbolic = %H.loc11_21.1 (constants.%H)] @@ -431,7 +465,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @OneRewrite(%G.loc9_23.2: %E_where.type) { -// CHECK:STDOUT: %G.patt.loc9_23.2: %pattern_type.97c = symbolic_binding_pattern G, 0 [symbolic = %G.patt.loc9_23.2 (constants.%G.patt)] +// CHECK:STDOUT: %G.patt.loc9_23.2: %pattern_type.b73 = symbolic_binding_pattern G, 0 [symbolic = %G.patt.loc9_23.2 (constants.%G.patt)] // CHECK:STDOUT: %G.loc9_23.1: %E_where.type = symbolic_binding G, 0 [symbolic = %G.loc9_23.1 (constants.%G)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -445,7 +479,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @RepeatedRewrite(%H.loc11_21.2: %E_where.type) { -// CHECK:STDOUT: %H.patt.loc11_21.2: %pattern_type.97c = symbolic_binding_pattern H, 0 [symbolic = %H.patt.loc11_21.2 (constants.%H.patt)] +// CHECK:STDOUT: %H.patt.loc11_21.2: %pattern_type.b73 = symbolic_binding_pattern H, 0 [symbolic = %H.patt.loc11_21.2 (constants.%H.patt)] // CHECK:STDOUT: %H.loc11_21.1: %E_where.type = symbolic_binding H, 0 [symbolic = %H.loc11_21.1 (constants.%H)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -481,7 +515,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %H.loc11_21.1 => constants.%I // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %OneRewrite.specific_fn.loc13_3.2 => constants.%OneRewrite.specific_fn.324e27.2 +// CHECK:STDOUT: %OneRewrite.specific_fn.loc13_3.2 => constants.%OneRewrite.specific_fn.ba0394.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @OneRewrite(constants.%I) { @@ -499,15 +533,19 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.WithSelf.%K [concrete] // CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.WithSelf.%L [concrete] // CHECK:STDOUT: %type: type = facet_type [concrete] -// CHECK:STDOUT: %.Self.c39: %type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.d2f: %J.type = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.d2f [symbolic_self] -// CHECK:STDOUT: %J.lookup_impl_witness: = lookup_impl_witness %.Self.d2f, @J [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %J.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.197: %type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.99c: %J.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.99c [symbolic_self] +// CHECK:STDOUT: %J.lookup_impl_witness.cb1: = lookup_impl_witness %.Self.frozen.99c, @J [symbolic_self] +// CHECK:STDOUT: %impl.elem0.221: type = impl_witness_access %J.lookup_impl_witness.cb1, element0 [symbolic_self] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %J.lookup_impl_witness, element1 [symbolic_self] -// CHECK:STDOUT: %J_where.type: type = facet_type <@J where %impl.elem0 = %empty_tuple.type and %impl.elem1 = bool> [concrete] +// CHECK:STDOUT: %impl.elem1.eed: type = impl_witness_access %J.lookup_impl_witness.cb1, element1 [symbolic_self] +// CHECK:STDOUT: %.Self: %J.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %J.lookup_impl_witness.df8: = lookup_impl_witness %.Self, @J [symbolic_self] +// CHECK:STDOUT: %impl.elem0.bbd: type = impl_witness_access %J.lookup_impl_witness.df8, element0 [symbolic_self] +// CHECK:STDOUT: %impl.elem1.fb5: type = impl_witness_access %J.lookup_impl_witness.df8, element1 [symbolic_self] +// CHECK:STDOUT: %J_where.type: type = facet_type <@J where %impl.elem0.bbd = %empty_tuple.type and %impl.elem1.fb5 = bool> [concrete] // CHECK:STDOUT: %pattern_type: type = pattern_type %J_where.type [concrete] // CHECK:STDOUT: %M.patt: %pattern_type = symbolic_binding_pattern M, 0 [symbolic] // CHECK:STDOUT: %M: %J_where.type = symbolic_binding M, 0 [symbolic] @@ -524,26 +562,33 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %M.patt.loc10_25.1: %pattern_type = symbolic_binding_pattern M, 0 [symbolic = %M.patt.loc10_25.2 (constants.%M.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc10_30.1: type = splice_block %.loc10_30.2 [concrete = constants.%J_where.type] { -// CHECK:STDOUT: %.Self.loc10_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc10_25: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] -// CHECK:STDOUT: %.Self.loc10_30: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.d2f] -// CHECK:STDOUT: %.Self.ref.loc10_36: %J.type = name_ref .Self, %.Self.loc10_30 [symbolic_self = constants.%.Self.d2f] -// CHECK:STDOUT: %.Self.as_type.loc10_36: type = facet_access_type %.Self.ref.loc10_36 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_36: type = converted %.Self.ref.loc10_36, %.Self.as_type.loc10_36 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc10_30: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.99c] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %J.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_36: %J.type = name_ref .Self, %.Self.frozen.loc10_30 [symbolic_self = constants.%.Self.frozen.99c] +// CHECK:STDOUT: %.Self.as_type.loc10_36: type = facet_access_type %.Self.ref.loc10_36 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_36: type = converted %.Self.ref.loc10_36, %.Self.as_type.loc10_36 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %K.ref: %J.assoc_type = name_ref K, @K.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc10_36.1: type = impl_witness_access constants.%J.lookup_impl_witness.cb1, element0 [symbolic_self = constants.%impl.elem0.221] // CHECK:STDOUT: %.loc10_42.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_42.2: type = converted %.loc10_42.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %.Self.ref.loc10_48: %J.type = name_ref .Self, %.Self.loc10_30 [symbolic_self = constants.%.Self.d2f] -// CHECK:STDOUT: %.Self.as_type.loc10_48: type = facet_access_type %.Self.ref.loc10_48 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc10_48: type = converted %.Self.ref.loc10_48, %.Self.as_type.loc10_48 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc10_39.1 = requirement_rewrite %impl.elem0.loc10_36.1, %.loc10_42.2 [concrete] +// CHECK:STDOUT: %.Self.ref.loc10_48: %J.type = name_ref .Self, %.Self.frozen.loc10_30 [symbolic_self = constants.%.Self.frozen.99c] +// CHECK:STDOUT: %.Self.as_type.loc10_48: type = facet_access_type %.Self.ref.loc10_48 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc10_48: type = converted %.Self.ref.loc10_48, %.Self.as_type.loc10_48 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %L.ref: %J.assoc_type = name_ref L, @L.%assoc1 [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%J.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] +// CHECK:STDOUT: %impl.elem1.loc10_48.1: type = impl_witness_access constants.%J.lookup_impl_witness.cb1, element1 [symbolic_self = constants.%impl.elem1.eed] // CHECK:STDOUT: %.loc10_53: type = type_literal bool [concrete = bool] +// CHECK:STDOUT: %rewrite.loc10_51.1 = requirement_rewrite %impl.elem1.loc10_48.1, %.loc10_53 [concrete] +// CHECK:STDOUT: %impl.elem0.loc10_36.2: type = impl_witness_access constants.%J.lookup_impl_witness.df8, element0 [symbolic_self = constants.%impl.elem0.bbd] +// CHECK:STDOUT: %rewrite.loc10_39.2 = requirement_rewrite %impl.elem0.loc10_36.2, %.loc10_42.2 [concrete] +// CHECK:STDOUT: %impl.elem1.loc10_48.2: type = impl_witness_access constants.%J.lookup_impl_witness.df8, element1 [symbolic_self = constants.%impl.elem1.fb5] +// CHECK:STDOUT: %rewrite.loc10_51.2 = requirement_rewrite %impl.elem1.loc10_48.2, %.loc10_53 [concrete] // CHECK:STDOUT: %.loc10_30.2: type = where_expr [concrete = constants.%J_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %J.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_42.2 -// CHECK:STDOUT: requirement_rewrite %impl.elem1, %.loc10_53 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %J.ref [concrete] +// CHECK:STDOUT: %rewrite.loc10_39.2 = requirement_rewrite %impl.elem0.loc10_36.2, %.loc10_42.2 [concrete] +// CHECK:STDOUT: %rewrite.loc10_51.2 = requirement_rewrite %impl.elem1.loc10_48.2, %.loc10_53 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %M.loc10_25.2: %J_where.type = symbolic_binding M, 0 [symbolic = %M.loc10_25.1 (constants.%M)] @@ -552,26 +597,33 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %N.patt.loc12_14.1: %pattern_type = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc12_14.2 (constants.%N.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc12_19.1: type = splice_block %.loc12_19.2 [concrete = constants.%J_where.type] { -// CHECK:STDOUT: %.Self.loc12_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.c39] +// CHECK:STDOUT: %.Self.frozen.loc12_14: %type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.197] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type] -// CHECK:STDOUT: %.Self.loc12_19: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.d2f] -// CHECK:STDOUT: %.Self.ref.loc12_25: %J.type = name_ref .Self, %.Self.loc12_19 [symbolic_self = constants.%.Self.d2f] -// CHECK:STDOUT: %.Self.as_type.loc12_25: type = facet_access_type %.Self.ref.loc12_25 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc12_25: type = converted %.Self.ref.loc12_25, %.Self.as_type.loc12_25 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen.loc12_19: %J.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.99c] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %J.ref [concrete] +// CHECK:STDOUT: %.Self.ref.loc12_25: %J.type = name_ref .Self, %.Self.frozen.loc12_19 [symbolic_self = constants.%.Self.frozen.99c] +// CHECK:STDOUT: %.Self.as_type.loc12_25: type = facet_access_type %.Self.ref.loc12_25 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc12_25: type = converted %.Self.ref.loc12_25, %.Self.as_type.loc12_25 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %L.ref: %J.assoc_type = name_ref L, @L.%assoc1 [concrete = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access constants.%J.lookup_impl_witness, element1 [symbolic_self = constants.%impl.elem1] +// CHECK:STDOUT: %impl.elem1.loc12_25.1: type = impl_witness_access constants.%J.lookup_impl_witness.cb1, element1 [symbolic_self = constants.%impl.elem1.eed] // CHECK:STDOUT: %.loc12_30: type = type_literal bool [concrete = bool] -// CHECK:STDOUT: %.Self.ref.loc12_39: %J.type = name_ref .Self, %.Self.loc12_19 [symbolic_self = constants.%.Self.d2f] -// CHECK:STDOUT: %.Self.as_type.loc12_39: type = facet_access_type %.Self.ref.loc12_39 [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc12_39: type = converted %.Self.ref.loc12_39, %.Self.as_type.loc12_39 [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %rewrite.loc12_28.1 = requirement_rewrite %impl.elem1.loc12_25.1, %.loc12_30 [concrete] +// CHECK:STDOUT: %.Self.ref.loc12_39: %J.type = name_ref .Self, %.Self.frozen.loc12_19 [symbolic_self = constants.%.Self.frozen.99c] +// CHECK:STDOUT: %.Self.as_type.loc12_39: type = facet_access_type %.Self.ref.loc12_39 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc12_39: type = converted %.Self.ref.loc12_39, %.Self.as_type.loc12_39 [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %K.ref: %J.assoc_type = name_ref K, @K.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%J.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc12_39.1: type = impl_witness_access constants.%J.lookup_impl_witness.cb1, element0 [symbolic_self = constants.%impl.elem0.221] // CHECK:STDOUT: %.loc12_45.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc12_45.2: type = converted %.loc12_45.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %rewrite.loc12_42.1 = requirement_rewrite %impl.elem0.loc12_39.1, %.loc12_45.2 [concrete] +// CHECK:STDOUT: %impl.elem1.loc12_25.2: type = impl_witness_access constants.%J.lookup_impl_witness.df8, element1 [symbolic_self = constants.%impl.elem1.fb5] +// CHECK:STDOUT: %rewrite.loc12_28.2 = requirement_rewrite %impl.elem1.loc12_25.2, %.loc12_30 [concrete] +// CHECK:STDOUT: %impl.elem0.loc12_39.2: type = impl_witness_access constants.%J.lookup_impl_witness.df8, element0 [symbolic_self = constants.%impl.elem0.bbd] +// CHECK:STDOUT: %rewrite.loc12_42.2 = requirement_rewrite %impl.elem0.loc12_39.2, %.loc12_45.2 [concrete] // CHECK:STDOUT: %.loc12_19.2: type = where_expr [concrete = constants.%J_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %J.ref -// CHECK:STDOUT: requirement_rewrite %impl.elem1, %.loc12_30 -// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc12_45.2 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %J.ref [concrete] +// CHECK:STDOUT: %rewrite.loc12_28.2 = requirement_rewrite %impl.elem1.loc12_25.2, %.loc12_30 [concrete] +// CHECK:STDOUT: %rewrite.loc12_42.2 = requirement_rewrite %impl.elem0.loc12_39.2, %.loc12_45.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %N.loc12_14.2: %J_where.type = symbolic_binding N, 0 [symbolic = %N.loc12_14.1 (constants.%N)] diff --git a/toolchain/check/testdata/where_expr/non_generic.carbon b/toolchain/check/testdata/where_expr/non_generic.carbon index 07646ff0cd1a..c5219749869d 100644 --- a/toolchain/check/testdata/where_expr/non_generic.carbon +++ b/toolchain/check/testdata/where_expr/non_generic.carbon @@ -23,12 +23,15 @@ fn NotGenericF(unused U: I where .T == i32) {} // CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete] // CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type @I [concrete] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.WithSelf.%T [concrete] -// 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.lookup_impl_witness: = lookup_impl_witness %.Self, @I [symbolic_self] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %I.lookup_impl_witness, element0 [symbolic_self] +// CHECK:STDOUT: %.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.lookup_impl_witness.ced: = lookup_impl_witness %.Self.frozen, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.125: type = impl_witness_access %I.lookup_impl_witness.ced, element0 [symbolic_self] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] +// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %I.lookup_impl_witness.78b: = lookup_impl_witness %.Self, @I [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e55: type = impl_witness_access %I.lookup_impl_witness.78b, element0 [symbolic_self] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where TODO> [concrete] // CHECK:STDOUT: %pattern_type.603: type = pattern_type %I_where.type [concrete] // CHECK:STDOUT: %U.param_patt: %pattern_type.603 = value_param_pattern [concrete] @@ -45,16 +48,20 @@ fn NotGenericF(unused U: I where .T == i32) {} // CHECK:STDOUT: %U.param: %I_where.type = value_param call_param0 // CHECK:STDOUT: %.loc17_28.1: type = splice_block %.loc17_28.2 [concrete = constants.%I_where.type] { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic_self = constants.%.Self] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.as_type] -// CHECK:STDOUT: %.loc17_34: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.as_type] +// CHECK:STDOUT: %.Self.frozen: %I.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc17_34: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type] // CHECK:STDOUT: %T.ref: %I.assoc_type = name_ref T, @T.%assoc0 [concrete = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic_self = constants.%impl.elem0] +// CHECK:STDOUT: %impl.elem0.loc17_34.1: type = impl_witness_access constants.%I.lookup_impl_witness.ced, element0 [symbolic_self = constants.%impl.elem0.125] // CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32] +// CHECK:STDOUT: %equiv.loc17_37.1 = requirement_equivalent %impl.elem0.loc17_34.1, %i32 [concrete] +// CHECK:STDOUT: %impl.elem0.loc17_34.2: type = impl_witness_access constants.%I.lookup_impl_witness.78b, element0 [symbolic_self = constants.%impl.elem0.e55] +// CHECK:STDOUT: %equiv.loc17_37.2 = requirement_equivalent %impl.elem0.loc17_34.2, %i32 [concrete] // CHECK:STDOUT: %.loc17_28.2: type = where_expr [concrete = constants.%I_where.type] { -// CHECK:STDOUT: requirement_base_facet_type %I.ref -// CHECK:STDOUT: requirement_equivalent %impl.elem0, %i32 +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %I.ref [concrete] +// CHECK:STDOUT: %equiv.loc17_37.2 = requirement_equivalent %impl.elem0.loc17_34.2, %i32 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U: %I_where.type = wrapper_binding U, %U.param diff --git a/toolchain/check/type_completion.cpp b/toolchain/check/type_completion.cpp index 8a9d3592ac94..0cf92403aa01 100644 --- a/toolchain/check/type_completion.cpp +++ b/toolchain/check/type_completion.cpp @@ -965,8 +965,7 @@ static auto GetSelfFacetValue(Context& context, SemIR::ConstantId self_const_id) static auto IdentifyFacetType(Context& context, SemIR::LocId loc_id, SemIR::ConstantId initial_self_const_id, SemIR::TypeInstId facet_type_inst_id, - bool allow_partially_identified, - bool subst_period_self, bool diagnose) + bool allow_partially_identified, bool diagnose) -> SemIR::IdentifiedFacetTypeId { auto facet_type_id = context.insts().GetAs(facet_type_inst_id).facet_type_id; @@ -985,7 +984,7 @@ static auto IdentifyFacetType(Context& context, SemIR::LocId loc_id, return identified_id; } - if (subst_period_self) { + { auto subst_id = SubstPeriodSelfInFacetType( context, loc_id, context.constant_values().GetInstId(initial_self_const_id), @@ -1240,11 +1239,10 @@ static auto IdentifyFacetType(Context& context, SemIR::LocId loc_id, auto TryToIdentifyFacetType(Context& context, SemIR::LocId loc_id, SemIR::ConstantId self_const_id, SemIR::TypeInstId facet_type_inst_id, - bool allow_partially_identified, - bool subst_period_self) + bool allow_partially_identified) -> SemIR::IdentifiedFacetTypeId { return IdentifyFacetType(context, loc_id, self_const_id, facet_type_inst_id, - allow_partially_identified, subst_period_self, + allow_partially_identified, /*diagnose=*/false); } @@ -1255,10 +1253,8 @@ auto RequireIdentifiedFacetType(Context& context, SemIR::LocId loc_id, bool diagnose) -> SemIR::IdentifiedFacetTypeId { CARBON_CHECK(diagnostic_context); Diagnostics::ContextScope scope(&context.emitter(), diagnostic_context); - return IdentifyFacetType(context, loc_id, self_const_id, facet_type_inst_id, - /*allow_partially_identified=*/false, - /*subst_period_self=*/true, diagnose); + /*allow_partially_identified=*/false, diagnose); } } // namespace Carbon::Check diff --git a/toolchain/check/type_completion.h b/toolchain/check/type_completion.h index 2dacf7ac9c4a..2730471c3581 100644 --- a/toolchain/check/type_completion.h +++ b/toolchain/check/type_completion.h @@ -78,8 +78,7 @@ auto RequireConcreteType(Context& context, SemIR::TypeId type_id, auto TryToIdentifyFacetType(Context& context, SemIR::LocId loc_id, SemIR::ConstantId self_const_id, SemIR::TypeInstId facet_type_inst_id, - bool allow_partially_identified, - bool subst_period_self) + bool allow_partially_identified) -> SemIR::IdentifiedFacetTypeId; // Requires the named constraints in the facet type to be complete, so that the diff --git a/toolchain/driver/testdata/compile/optimize/optimize_debug.carbon b/toolchain/driver/testdata/compile/optimize/optimize_debug.carbon index 59bf686dddeb..5f0209a25597 100644 --- a/toolchain/driver/testdata/compile/optimize/optimize_debug.carbon +++ b/toolchain/driver/testdata/compile/optimize/optimize_debug.carbon @@ -121,7 +121,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: !22 = !DILocation(line: 18, column: 9, scope: !16) // CHECK:STDOUT: !23 = !DILocation(line: 19, column: 5, scope: !16) // CHECK:STDOUT: !24 = !DILocation(line: 331, column: 3, scope: !25, inlinedAt: !32) -// CHECK:STDOUT: !25 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !26, line: 331, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !29) +// CHECK:STDOUT: !25 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !26, line: 331, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !29) // CHECK:STDOUT: !26 = !DIFile(filename: "{{.*}}/prelude/types/int.carbon", directory: "") // CHECK:STDOUT: !27 = !DISubroutineType(types: !28) // CHECK:STDOUT: !28 = !{null, !7, !7} diff --git a/toolchain/driver/testdata/compile/optimize/optimize_default.carbon b/toolchain/driver/testdata/compile/optimize/optimize_default.carbon index f66d19ce0899..7af27c466e10 100644 --- a/toolchain/driver/testdata/compile/optimize/optimize_default.carbon +++ b/toolchain/driver/testdata/compile/optimize/optimize_default.carbon @@ -121,7 +121,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: !22 = !DILocation(line: 18, column: 9, scope: !16) // CHECK:STDOUT: !23 = !DILocation(line: 19, column: 5, scope: !16) // CHECK:STDOUT: !24 = !DILocation(line: 331, column: 3, scope: !25, inlinedAt: !32) -// CHECK:STDOUT: !25 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !26, line: 331, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !29) +// CHECK:STDOUT: !25 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !26, line: 331, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !29) // CHECK:STDOUT: !26 = !DIFile(filename: "{{.*}}/prelude/types/int.carbon", directory: "") // CHECK:STDOUT: !27 = !DISubroutineType(types: !28) // CHECK:STDOUT: !28 = !{null, !7, !7} diff --git a/toolchain/driver/testdata/compile/optimize/optimize_none.carbon b/toolchain/driver/testdata/compile/optimize/optimize_none.carbon index 8ada6ba21db4..1e7f8d1a5020 100644 --- a/toolchain/driver/testdata/compile/optimize/optimize_none.carbon +++ b/toolchain/driver/testdata/compile/optimize/optimize_none.carbon @@ -95,13 +95,13 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: noinline nounwind optnone // CHECK:STDOUT: define linkonce_odr void @"_COp.Int.9452f4c51951679b.Core:Inc.Core.be1e879c1ad406d8"(ptr %self) #0 !dbg !34 { -// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 1), !dbg !38 +// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 1), !dbg !38 // CHECK:STDOUT: ret void, !dbg !39 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: noinline nounwind optnone -// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 %other) #0 !dbg !40 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %other), !dbg !46 +// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 %other) #0 !dbg !40 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %other), !dbg !46 // CHECK:STDOUT: %2 = load i32, ptr %self, align 4, !dbg !47 // CHECK:STDOUT: %3 = add i32 %2, %1, !dbg !47 // CHECK:STDOUT: store i32 %3, ptr %self, align 4, !dbg !47 @@ -109,7 +109,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: noinline nounwind optnone -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %self) #0 !dbg !48 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %self) #0 !dbg !48 { // CHECK:STDOUT: %1 = call i32 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.be1e879c1ad406d8"(i32 %self), !dbg !53 // CHECK:STDOUT: ret i32 %1, !dbg !54 // CHECK:STDOUT: } @@ -165,7 +165,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: !37 = !DILocalVariable(arg: 1, scope: !34, type: !7) // CHECK:STDOUT: !38 = !DILocation(line: 398, column: 5, scope: !34) // CHECK:STDOUT: !39 = !DILocation(line: 396, column: 3, scope: !34) -// CHECK:STDOUT: !40 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !35, line: 331, type: !41, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !43) +// CHECK:STDOUT: !40 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !35, line: 331, type: !41, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !43) // CHECK:STDOUT: !41 = !DISubroutineType(types: !42) // CHECK:STDOUT: !42 = !{null, !7, !7} // CHECK:STDOUT: !43 = !{!44, !45} @@ -173,7 +173,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: !45 = !DILocalVariable(arg: 2, scope: !40, type: !7) // CHECK:STDOUT: !46 = !DILocation(line: 0, scope: !40) // CHECK:STDOUT: !47 = !DILocation(line: 331, column: 3, scope: !40) -// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47", scope: null, file: !35, line: 64, type: !49, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !51) +// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659", scope: null, file: !35, line: 64, type: !49, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !51) // CHECK:STDOUT: !49 = !DISubroutineType(types: !50) // CHECK:STDOUT: !50 = !{!7, !7} // CHECK:STDOUT: !51 = !{!52} diff --git a/toolchain/driver/testdata/compile/optimize/optimize_size.carbon b/toolchain/driver/testdata/compile/optimize/optimize_size.carbon index 2b4ba4594e7e..ccbcb772ee5c 100644 --- a/toolchain/driver/testdata/compile/optimize/optimize_size.carbon +++ b/toolchain/driver/testdata/compile/optimize/optimize_size.carbon @@ -94,13 +94,13 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: minsize nounwind optsize // CHECK:STDOUT: define linkonce_odr void @"_COp.Int.9452f4c51951679b.Core:Inc.Core.be1e879c1ad406d8"(ptr %self) #0 !dbg !34 { -// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 1), !dbg !38 +// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 1), !dbg !38 // CHECK:STDOUT: ret void, !dbg !39 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: alwaysinline minsize nounwind optsize -// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 %other) #2 !dbg !40 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %other), !dbg !46 +// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 %other) #2 !dbg !40 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %other), !dbg !46 // CHECK:STDOUT: %2 = load i32, ptr %self, align 4, !dbg !47 // CHECK:STDOUT: %3 = add i32 %2, %1, !dbg !47 // CHECK:STDOUT: store i32 %3, ptr %self, align 4, !dbg !47 @@ -108,7 +108,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: minsize nounwind optsize -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %self) #0 !dbg !48 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %self) #0 !dbg !48 { // CHECK:STDOUT: %1 = call i32 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.be1e879c1ad406d8"(i32 %self), !dbg !53 // CHECK:STDOUT: ret i32 %1, !dbg !54 // CHECK:STDOUT: } @@ -165,7 +165,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: !37 = !DILocalVariable(arg: 1, scope: !34, type: !7) // CHECK:STDOUT: !38 = !DILocation(line: 398, column: 5, scope: !34) // CHECK:STDOUT: !39 = !DILocation(line: 396, column: 3, scope: !34) -// CHECK:STDOUT: !40 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !35, line: 331, type: !41, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !43) +// CHECK:STDOUT: !40 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !35, line: 331, type: !41, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !43) // CHECK:STDOUT: !41 = !DISubroutineType(types: !42) // CHECK:STDOUT: !42 = !{null, !7, !7} // CHECK:STDOUT: !43 = !{!44, !45} @@ -173,7 +173,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: !45 = !DILocalVariable(arg: 2, scope: !40, type: !7) // CHECK:STDOUT: !46 = !DILocation(line: 0, scope: !40) // CHECK:STDOUT: !47 = !DILocation(line: 331, column: 3, scope: !40) -// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47", scope: null, file: !35, line: 64, type: !49, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !51) +// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659", scope: null, file: !35, line: 64, type: !49, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !51) // CHECK:STDOUT: !49 = !DISubroutineType(types: !50) // CHECK:STDOUT: !50 = !{!7, !7} // CHECK:STDOUT: !51 = !{!52} diff --git a/toolchain/driver/testdata/compile/optimize/optimize_speed.carbon b/toolchain/driver/testdata/compile/optimize/optimize_speed.carbon index 28fe4e4344e7..201fbdcec6bd 100644 --- a/toolchain/driver/testdata/compile/optimize/optimize_speed.carbon +++ b/toolchain/driver/testdata/compile/optimize/optimize_speed.carbon @@ -136,7 +136,7 @@ fn VectorizedWithOptSpeed(a: array(i32, 65536)*) { // CHECK:STDOUT: !21 = !DILocalVariable(arg: 1, scope: !16, type: !19) // CHECK:STDOUT: !22 = !DILocation(line: 18, column: 9, scope: !16) // CHECK:STDOUT: !23 = !DILocation(line: 331, column: 3, scope: !24, inlinedAt: !31) -// CHECK:STDOUT: !24 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !25, line: 331, type: !26, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !28) +// CHECK:STDOUT: !24 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !25, line: 331, type: !26, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !28) // CHECK:STDOUT: !25 = !DIFile(filename: "{{.*}}/prelude/types/int.carbon", directory: "") // CHECK:STDOUT: !26 = !DISubroutineType(types: !27) // CHECK:STDOUT: !27 = !{null, !7, !7} diff --git a/toolchain/lower/testdata/array/iterate.carbon b/toolchain/lower/testdata/array/iterate.carbon index e0e3429d9652..ea094b702302 100644 --- a/toolchain/lower/testdata/array/iterate.carbon +++ b/toolchain/lower/testdata/array/iterate.carbon @@ -49,16 +49,16 @@ fn F() { // CHECK:STDOUT: for.next: ; preds = %for.body, %entry // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc17_19.5.temp), !dbg !8 // CHECK:STDOUT: call void @"_CNext.e163a239f9fa927c:Iterate.Core.620427d555024fe2"(ptr %.loc17_19.5.temp, ptr @array.loc16_43.24, ptr %var), !dbg !8 -// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.18012f5191ea64dc(ptr %.loc17_19.5.temp), !dbg !8 +// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.8698ccdc411f2307(ptr %.loc17_19.5.temp), !dbg !8 // CHECK:STDOUT: br i1 %Optional.HasValue.call, label %for.body, label %for.done, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.body: ; preds = %for.next -// CHECK:STDOUT: %Optional.Get.call = call i32 @_CGet.Optional.Core.18012f5191ea64dc(ptr %.loc17_19.5.temp), !dbg !8 +// CHECK:STDOUT: %Optional.Get.call = call i32 @_CGet.Optional.Core.8698ccdc411f2307(ptr %.loc17_19.5.temp), !dbg !8 // CHECK:STDOUT: call void @_CG.Main(i32 %Optional.Get.call), !dbg !9 // CHECK:STDOUT: br label %for.next, !dbg !10 // CHECK:STDOUT: // CHECK:STDOUT: for.done: ; preds = %for.next -// CHECK:STDOUT: call void @"_COp.ab782c7eec490fc7:core.Destroy.Core"(ptr %.loc17_19.5.temp), !dbg !8 +// CHECK:STDOUT: call void @"_COp.9619ac5c2f73b9b5:core.Destroy.Core"(ptr %.loc17_19.5.temp), !dbg !8 // CHECK:STDOUT: call void @"_COp.5e27612b9dd31a14:core.Destroy.Core"(ptr %var), !dbg !8 // CHECK:STDOUT: call void @"_COp.3a5df7cec745952b:core.Destroy.Core"(ptr @array), !dbg !7 // CHECK:STDOUT: ret void, !dbg !11 @@ -97,7 +97,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.ab782c7eec490fc7:core.Destroy.Core"(ptr %self) #0 !dbg !38 { +// CHECK:STDOUT: define weak_odr void @"_COp.9619ac5c2f73b9b5:core.Destroy.Core"(ptr %self) #0 !dbg !38 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !41 // CHECK:STDOUT: } @@ -128,40 +128,40 @@ fn F() { // CHECK:STDOUT: %5 = sub i32 %4, 1, !dbg !62 // CHECK:STDOUT: %array.index = getelementptr inbounds [6 x i32], ptr %self, i32 0, i32 %5, !dbg !63 // CHECK:STDOUT: %6 = load i32, ptr %array.index, align 4, !dbg !63 -// CHECK:STDOUT: call void @_CSome.Optional.Core.18012f5191ea64dc(ptr %return, i32 %6), !dbg !64 +// CHECK:STDOUT: call void @_CSome.Optional.Core.8698ccdc411f2307(ptr %return, i32 %6), !dbg !64 // CHECK:STDOUT: ret void, !dbg !65 // CHECK:STDOUT: // CHECK:STDOUT: 7: ; preds = %0 -// CHECK:STDOUT: call void @_CNone.Optional.Core.18012f5191ea64dc(ptr %return), !dbg !66 +// CHECK:STDOUT: call void @_CNone.Optional.Core.8698ccdc411f2307(ptr %return), !dbg !66 // CHECK:STDOUT: ret void, !dbg !67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.18012f5191ea64dc(ptr %self) #0 !dbg !68 { +// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.8698ccdc411f2307(ptr %self) #0 !dbg !68 { // CHECK:STDOUT: %1 = call i1 @"_CHas.5d6f3f3a4b44a8f1:OptionalStorage.Core.58016a73bff04416"(ptr %self), !dbg !74 // CHECK:STDOUT: ret i1 %1, !dbg !75 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @_CGet.Optional.Core.18012f5191ea64dc(ptr %self) #0 !dbg !76 { +// CHECK:STDOUT: define linkonce_odr i32 @_CGet.Optional.Core.8698ccdc411f2307(ptr %self) #0 !dbg !76 { // CHECK:STDOUT: %1 = call i32 @"_CGet.5d6f3f3a4b44a8f1:OptionalStorage.Core.58016a73bff04416"(ptr %self), !dbg !79 // CHECK:STDOUT: ret i32 %1, !dbg !80 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr void @"_COp.Int.9452f4c51951679b.Core:Inc.Core.be1e879c1ad406d8"(ptr %self) #0 !dbg !81 { -// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 1), !dbg !85 +// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 1), !dbg !85 // CHECK:STDOUT: ret void, !dbg !86 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.18012f5191ea64dc(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !87 { +// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.8698ccdc411f2307(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !87 { // CHECK:STDOUT: call void @"_CSome.5d6f3f3a4b44a8f1:OptionalStorage.Core.58016a73bff04416"(ptr %return, i32 %value), !dbg !92 // CHECK:STDOUT: ret void, !dbg !93 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.18012f5191ea64dc(ptr sret(<{ i32, i1 }>) %return) #0 !dbg !94 { +// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.8698ccdc411f2307(ptr sret(<{ i32, i1 }>) %return) #0 !dbg !94 { // CHECK:STDOUT: call void @"_CNone.5d6f3f3a4b44a8f1:OptionalStorage.Core.58016a73bff04416"(ptr %return), !dbg !97 // CHECK:STDOUT: ret void, !dbg !98 // CHECK:STDOUT: } @@ -182,8 +182,8 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: alwaysinline nounwind -// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 %other) #2 !dbg !109 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %other), !dbg !115 +// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 %other) #2 !dbg !109 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %other), !dbg !115 // CHECK:STDOUT: %2 = load i32, ptr %self, align 4, !dbg !116 // CHECK:STDOUT: %3 = add i32 %2, %1, !dbg !116 // CHECK:STDOUT: store i32 %3, ptr %self, align 4, !dbg !116 @@ -207,7 +207,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %self) #0 !dbg !126 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %self) #0 !dbg !126 { // CHECK:STDOUT: %1 = call i32 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.be1e879c1ad406d8"(i32 %self), !dbg !131 // CHECK:STDOUT: ret i32 %1, !dbg !132 // CHECK:STDOUT: } @@ -265,7 +265,7 @@ fn F() { // CHECK:STDOUT: !35 = !{!36} // CHECK:STDOUT: !36 = !DILocalVariable(arg: 1, scope: !34, type: !22) // CHECK:STDOUT: !37 = !DILocation(line: 17, column: 7, scope: !34) -// CHECK:STDOUT: !38 = distinct !DISubprogram(name: "Op", linkageName: "_COp.ab782c7eec490fc7:core.Destroy.Core", scope: null, file: !1, line: 17, type: !20, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !39) +// CHECK:STDOUT: !38 = distinct !DISubprogram(name: "Op", linkageName: "_COp.9619ac5c2f73b9b5:core.Destroy.Core", scope: null, file: !1, line: 17, type: !20, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !39) // CHECK:STDOUT: !39 = !{!40} // CHECK:STDOUT: !40 = !DILocalVariable(arg: 1, scope: !38, type: !22) // CHECK:STDOUT: !41 = !DILocation(line: 17, column: 7, scope: !38) @@ -295,7 +295,7 @@ fn F() { // CHECK:STDOUT: !65 = !DILocation(line: 27, column: 7, scope: !53) // CHECK:STDOUT: !66 = !DILocation(line: 29, column: 14, scope: !53) // CHECK:STDOUT: !67 = !DILocation(line: 29, column: 7, scope: !53) -// CHECK:STDOUT: !68 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.18012f5191ea64dc", scope: null, file: !69, line: 36, type: !70, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !72) +// CHECK:STDOUT: !68 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.8698ccdc411f2307", scope: null, file: !69, line: 36, type: !70, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !72) // CHECK:STDOUT: !69 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !70 = !DISubroutineType(types: !71) // CHECK:STDOUT: !71 = !{!22, !22} @@ -303,7 +303,7 @@ fn F() { // CHECK:STDOUT: !73 = !DILocalVariable(arg: 1, scope: !68, type: !22) // CHECK:STDOUT: !74 = !DILocation(line: 37, column: 12, scope: !68) // CHECK:STDOUT: !75 = !DILocation(line: 37, column: 5, scope: !68) -// CHECK:STDOUT: !76 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.18012f5191ea64dc", scope: null, file: !69, line: 39, type: !48, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !77) +// CHECK:STDOUT: !76 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.8698ccdc411f2307", scope: null, file: !69, line: 39, type: !48, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !77) // CHECK:STDOUT: !77 = !{!78} // CHECK:STDOUT: !78 = !DILocalVariable(arg: 1, scope: !76, type: !22) // CHECK:STDOUT: !79 = !DILocation(line: 40, column: 12, scope: !76) @@ -314,14 +314,14 @@ fn F() { // CHECK:STDOUT: !84 = !DILocalVariable(arg: 1, scope: !81, type: !15) // CHECK:STDOUT: !85 = !DILocation(line: 398, column: 5, scope: !81) // CHECK:STDOUT: !86 = !DILocation(line: 396, column: 3, scope: !81) -// CHECK:STDOUT: !87 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.18012f5191ea64dc", scope: null, file: !69, line: 33, type: !88, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !90) +// CHECK:STDOUT: !87 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.8698ccdc411f2307", scope: null, file: !69, line: 33, type: !88, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !90) // CHECK:STDOUT: !88 = !DISubroutineType(types: !89) // CHECK:STDOUT: !89 = !{!22, !15} // CHECK:STDOUT: !90 = !{!91} // CHECK:STDOUT: !91 = !DILocalVariable(arg: 1, scope: !87, type: !15) // CHECK:STDOUT: !92 = !DILocation(line: 34, column: 12, scope: !87) // CHECK:STDOUT: !93 = !DILocation(line: 34, column: 5, scope: !87) -// CHECK:STDOUT: !94 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.18012f5191ea64dc", scope: null, file: !69, line: 30, type: !95, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !94 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.8698ccdc411f2307", scope: null, file: !69, line: 30, type: !95, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !95 = !DISubroutineType(types: !96) // CHECK:STDOUT: !96 = !{!22} // CHECK:STDOUT: !97 = !DILocation(line: 31, column: 12, scope: !94) @@ -336,7 +336,7 @@ fn F() { // CHECK:STDOUT: !106 = !DILocalVariable(arg: 1, scope: !104, type: !22) // CHECK:STDOUT: !107 = !DILocation(line: 145, column: 12, scope: !104) // CHECK:STDOUT: !108 = !DILocation(line: 145, column: 5, scope: !104) -// CHECK:STDOUT: !109 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !82, line: 331, type: !110, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !112) +// CHECK:STDOUT: !109 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !82, line: 331, type: !110, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !112) // CHECK:STDOUT: !110 = !DISubroutineType(types: !111) // CHECK:STDOUT: !111 = !{null, !15, !15} // CHECK:STDOUT: !112 = !{!113, !114} @@ -353,7 +353,7 @@ fn F() { // CHECK:STDOUT: !123 = distinct !DISubprogram(name: "None", linkageName: "_CNone.5d6f3f3a4b44a8f1:OptionalStorage.Core.58016a73bff04416", scope: null, file: !69, line: 125, type: !95, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !124 = !DILocation(line: 128, column: 5, scope: !123) // CHECK:STDOUT: !125 = !DILocation(line: 129, column: 5, scope: !123) -// CHECK:STDOUT: !126 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47", scope: null, file: !82, line: 64, type: !127, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !129) +// CHECK:STDOUT: !126 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659", scope: null, file: !82, line: 64, type: !127, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !129) // CHECK:STDOUT: !127 = !DISubroutineType(types: !128) // CHECK:STDOUT: !128 = !{!15, !15} // CHECK:STDOUT: !129 = !{!130} diff --git a/toolchain/lower/testdata/for/bindings.carbon b/toolchain/lower/testdata/for/bindings.carbon index db92af4b8598..cb1fd7c028b2 100644 --- a/toolchain/lower/testdata/for/bindings.carbon +++ b/toolchain/lower/testdata/for/bindings.carbon @@ -56,13 +56,13 @@ fn For() { // CHECK:STDOUT: for.next: ; preds = %for.body, %entry // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc29_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_CNext.EmptyRange.a081b942542726db.Main:Iterate.Core.c9f733d9bf35d2e5"(ptr %.loc29_33.1.temp, ptr %r.var, ptr %var), !dbg !8 -// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.66b735e0a187b4e4(ptr %.loc29_33.1.temp), !dbg !8 +// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.04b328ae73286f7d(ptr %.loc29_33.1.temp), !dbg !8 // CHECK:STDOUT: br i1 %Optional.HasValue.call, label %for.body, label %for.done, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.body: ; preds = %for.next // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %n.var), !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc29_33.8.temp), !dbg !8 -// CHECK:STDOUT: call void @_CGet.Optional.Core.66b735e0a187b4e4(ptr %.loc29_33.8.temp, ptr %.loc29_33.1.temp), !dbg !8 +// CHECK:STDOUT: call void @_CGet.Optional.Core.04b328ae73286f7d(ptr %.loc29_33.8.temp, ptr %.loc29_33.1.temp), !dbg !8 // CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc29_33.8.temp, i32 0, i32 0, !dbg !8 // CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %.loc29_33.8.temp, i32 0, i32 1, !dbg !8 // CHECK:STDOUT: %.loc29_33.11 = load i32, ptr %tuple.elem0.tuple.elem, align 4, !dbg !8 @@ -74,7 +74,7 @@ fn For() { // CHECK:STDOUT: for.done: ; preds = %for.next // CHECK:STDOUT: call void @"_COp.eff30dc40f4a53d2:core.Destroy.Core"(ptr %.loc29_33.8.temp), !dbg !8 // CHECK:STDOUT: call void @"_COp.5e27612b9dd31a14:core.Destroy.Core"(ptr %n.var), !dbg !9 -// CHECK:STDOUT: call void @"_COp.72fec7d6e0df4c57:core.Destroy.Core"(ptr %.loc29_33.1.temp), !dbg !8 +// CHECK:STDOUT: call void @"_COp.a79511dff093d1a6:core.Destroy.Core"(ptr %.loc29_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_COp.88c97397fb274b67:core.Destroy.Core"(ptr %r.var), !dbg !7 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } @@ -118,7 +118,7 @@ fn For() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.72fec7d6e0df4c57:core.Destroy.Core"(ptr %self) #0 !dbg !43 { +// CHECK:STDOUT: define weak_odr void @"_COp.a79511dff093d1a6:core.Destroy.Core"(ptr %self) #0 !dbg !43 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !46 // CHECK:STDOUT: } @@ -144,24 +144,24 @@ fn For() { // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr void @"_CNext.EmptyRange.a081b942542726db.Main:Iterate.Core.c9f733d9bf35d2e5"(ptr sret(<{ { i32, i32 }, i1 }>) %return, ptr %self, ptr %_) #0 !dbg !55 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CNone.Optional.Core.66b735e0a187b4e4(ptr %return), !dbg !61 +// CHECK:STDOUT: call void @_CNone.Optional.Core.04b328ae73286f7d(ptr %return), !dbg !61 // CHECK:STDOUT: ret void, !dbg !62 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.66b735e0a187b4e4(ptr %self) #0 !dbg !63 { +// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.04b328ae73286f7d(ptr %self) #0 !dbg !63 { // CHECK:STDOUT: %1 = call i1 @"_CHas.5d6f3f3a4b44a8f1:OptionalStorage.Core.c9f733d9bf35d2e5"(ptr %self), !dbg !69 // CHECK:STDOUT: ret i1 %1, !dbg !70 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CGet.Optional.Core.66b735e0a187b4e4(ptr sret({ i32, i32 }) %return, ptr %self) #0 !dbg !71 { +// CHECK:STDOUT: define linkonce_odr void @_CGet.Optional.Core.04b328ae73286f7d(ptr sret({ i32, i32 }) %return, ptr %self) #0 !dbg !71 { // CHECK:STDOUT: call void @"_CGet.5d6f3f3a4b44a8f1:OptionalStorage.Core.c9f733d9bf35d2e5"(ptr %return, ptr %self), !dbg !74 // CHECK:STDOUT: ret void, !dbg !75 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.66b735e0a187b4e4(ptr sret(<{ { i32, i32 }, i1 }>) %return) #0 !dbg !76 { +// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.04b328ae73286f7d(ptr sret(<{ { i32, i32 }, i1 }>) %return) #0 !dbg !76 { // CHECK:STDOUT: call void @"_CNone.5d6f3f3a4b44a8f1:OptionalStorage.Core.c9f733d9bf35d2e5"(ptr %return), !dbg !79 // CHECK:STDOUT: ret void, !dbg !80 // CHECK:STDOUT: } @@ -253,7 +253,7 @@ fn For() { // CHECK:STDOUT: !40 = !{!41} // CHECK:STDOUT: !41 = !DILocalVariable(arg: 1, scope: !39, type: !23) // CHECK:STDOUT: !42 = !DILocation(line: 29, column: 7, scope: !39) -// CHECK:STDOUT: !43 = distinct !DISubprogram(name: "Op", linkageName: "_COp.72fec7d6e0df4c57:core.Destroy.Core", scope: null, file: !1, line: 29, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !44) +// CHECK:STDOUT: !43 = distinct !DISubprogram(name: "Op", linkageName: "_COp.a79511dff093d1a6:core.Destroy.Core", scope: null, file: !1, line: 29, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !44) // CHECK:STDOUT: !44 = !{!45} // CHECK:STDOUT: !45 = !DILocalVariable(arg: 1, scope: !43, type: !23) // CHECK:STDOUT: !46 = !DILocation(line: 29, column: 7, scope: !43) @@ -273,7 +273,7 @@ fn For() { // CHECK:STDOUT: !60 = !DILocalVariable(arg: 2, scope: !55, type: !23) // CHECK:STDOUT: !61 = !DILocation(line: 19, column: 14, scope: !55) // CHECK:STDOUT: !62 = !DILocation(line: 19, column: 7, scope: !55) -// CHECK:STDOUT: !63 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.66b735e0a187b4e4", scope: null, file: !64, line: 36, type: !65, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !67) +// CHECK:STDOUT: !63 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.04b328ae73286f7d", scope: null, file: !64, line: 36, type: !65, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !67) // CHECK:STDOUT: !64 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !65 = !DISubroutineType(types: !66) // CHECK:STDOUT: !66 = !{!23, !23} @@ -281,12 +281,12 @@ fn For() { // CHECK:STDOUT: !68 = !DILocalVariable(arg: 1, scope: !63, type: !23) // CHECK:STDOUT: !69 = !DILocation(line: 37, column: 12, scope: !63) // CHECK:STDOUT: !70 = !DILocation(line: 37, column: 5, scope: !63) -// CHECK:STDOUT: !71 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.66b735e0a187b4e4", scope: null, file: !64, line: 39, type: !65, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !72) +// CHECK:STDOUT: !71 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.04b328ae73286f7d", scope: null, file: !64, line: 39, type: !65, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !72) // CHECK:STDOUT: !72 = !{!73} // CHECK:STDOUT: !73 = !DILocalVariable(arg: 1, scope: !71, type: !23) // CHECK:STDOUT: !74 = !DILocation(line: 40, column: 12, scope: !71) // CHECK:STDOUT: !75 = !DILocation(line: 40, column: 5, scope: !71) -// CHECK:STDOUT: !76 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.66b735e0a187b4e4", scope: null, file: !64, line: 30, type: !77, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !76 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.04b328ae73286f7d", scope: null, file: !64, line: 30, type: !77, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !77 = !DISubroutineType(types: !78) // CHECK:STDOUT: !78 = !{!23} // CHECK:STDOUT: !79 = !DILocation(line: 31, column: 12, scope: !76) diff --git a/toolchain/lower/testdata/for/break_continue.carbon b/toolchain/lower/testdata/for/break_continue.carbon index 2271f3a43e19..fdd486b828af 100644 --- a/toolchain/lower/testdata/for/break_continue.carbon +++ b/toolchain/lower/testdata/for/break_continue.carbon @@ -50,11 +50,11 @@ fn For() { // CHECK:STDOUT: for.next: ; preds = %if.else.loc22, %if.then.loc22, %entry // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc20_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_CNext.IntRange.9452f4c51951679b.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc20_33.1.temp, ptr %.loc20_32.1.temp, ptr %var), !dbg !8 -// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.95ac245efc335d3f(ptr %.loc20_33.1.temp), !dbg !8 +// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.329ac87584bc77f7(ptr %.loc20_33.1.temp), !dbg !8 // CHECK:STDOUT: br i1 %Optional.HasValue.call, label %for.body, label %for.done, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.body: ; preds = %for.next -// CHECK:STDOUT: %Optional.Get.call = call i32 @_CGet.Optional.Core.95ac245efc335d3f(ptr %.loc20_33.1.temp), !dbg !8 +// CHECK:STDOUT: %Optional.Get.call = call i32 @_CGet.Optional.Core.329ac87584bc77f7(ptr %.loc20_33.1.temp), !dbg !8 // CHECK:STDOUT: %F.call = call i1 @_CF.Main(), !dbg !9 // CHECK:STDOUT: br i1 %F.call, label %if.then.loc21, label %if.else.loc21, !dbg !10 // CHECK:STDOUT: @@ -73,7 +73,7 @@ fn For() { // CHECK:STDOUT: br label %for.next, !dbg !16 // CHECK:STDOUT: // CHECK:STDOUT: for.done: ; preds = %if.then.loc21, %for.next -// CHECK:STDOUT: call void @"_COp.ab3effcb00e348a7:core.Destroy.Core"(ptr %.loc20_33.1.temp), !dbg !8 +// CHECK:STDOUT: call void @"_COp.f9d363db90f1ff8b:core.Destroy.Core"(ptr %.loc20_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_COp.5e27612b9dd31a14:core.Destroy.Core"(ptr %var), !dbg !8 // CHECK:STDOUT: call void @"_COp.0d5da2659ce22e5f:core.Destroy.Core"(ptr %.loc20_32.1.temp), !dbg !7 // CHECK:STDOUT: ret void, !dbg !17 @@ -114,7 +114,7 @@ fn For() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.ab3effcb00e348a7:core.Destroy.Core"(ptr %self) #0 !dbg !45 { +// CHECK:STDOUT: define weak_odr void @"_COp.f9d363db90f1ff8b:core.Destroy.Core"(ptr %self) #0 !dbg !45 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !48 // CHECK:STDOUT: } @@ -156,24 +156,24 @@ fn For() { // CHECK:STDOUT: 6: ; preds = %0 // CHECK:STDOUT: call void @"_COp.Int.9452f4c51951679b.Core:Inc.Core.be1e879c1ad406d8"(ptr %cursor), !dbg !75 // CHECK:STDOUT: %7 = load i32, ptr %1, align 4, !dbg !76 -// CHECK:STDOUT: call void @_CSome.Optional.Core.95ac245efc335d3f(ptr %return, i32 %7), !dbg !77 +// CHECK:STDOUT: call void @_CSome.Optional.Core.329ac87584bc77f7(ptr %return, i32 %7), !dbg !77 // CHECK:STDOUT: call void @"_COp.5e27612b9dd31a14:core.Destroy.Core"(ptr %1), !dbg !70 // CHECK:STDOUT: ret void, !dbg !78 // CHECK:STDOUT: // CHECK:STDOUT: 8: ; preds = %0 -// CHECK:STDOUT: call void @_CNone.Optional.Core.95ac245efc335d3f(ptr %return), !dbg !79 +// CHECK:STDOUT: call void @_CNone.Optional.Core.329ac87584bc77f7(ptr %return), !dbg !79 // CHECK:STDOUT: call void @"_COp.5e27612b9dd31a14:core.Destroy.Core"(ptr %1), !dbg !70 // CHECK:STDOUT: ret void, !dbg !80 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.95ac245efc335d3f(ptr %self) #0 !dbg !81 { +// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.329ac87584bc77f7(ptr %self) #0 !dbg !81 { // CHECK:STDOUT: %1 = call i1 @"_CHas.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a"(ptr %self), !dbg !87 // CHECK:STDOUT: ret i1 %1, !dbg !88 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @_CGet.Optional.Core.95ac245efc335d3f(ptr %self) #0 !dbg !89 { +// CHECK:STDOUT: define linkonce_odr i32 @_CGet.Optional.Core.329ac87584bc77f7(ptr %self) #0 !dbg !89 { // CHECK:STDOUT: %1 = call i32 @"_CGet.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a"(ptr %self), !dbg !92 // CHECK:STDOUT: ret i32 %1, !dbg !93 // CHECK:STDOUT: } @@ -182,18 +182,18 @@ fn For() { // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr void @"_COp.Int.9452f4c51951679b.Core:Inc.Core.be1e879c1ad406d8"(ptr %self) #0 !dbg !94 { -// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 1), !dbg !98 +// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 1), !dbg !98 // CHECK:STDOUT: ret void, !dbg !99 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.95ac245efc335d3f(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !100 { +// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.329ac87584bc77f7(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !100 { // CHECK:STDOUT: call void @"_CSome.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a"(ptr %return, i32 %value), !dbg !105 // CHECK:STDOUT: ret void, !dbg !106 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.95ac245efc335d3f(ptr sret(<{ i32, i1 }>) %return) #0 !dbg !107 { +// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.329ac87584bc77f7(ptr sret(<{ i32, i1 }>) %return) #0 !dbg !107 { // CHECK:STDOUT: call void @"_CNone.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a"(ptr %return), !dbg !110 // CHECK:STDOUT: ret void, !dbg !111 // CHECK:STDOUT: } @@ -214,8 +214,8 @@ fn For() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: alwaysinline nounwind -// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 %other) #2 !dbg !122 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %other), !dbg !128 +// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 %other) #2 !dbg !122 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %other), !dbg !128 // CHECK:STDOUT: %2 = load i32, ptr %self, align 4, !dbg !129 // CHECK:STDOUT: %3 = add i32 %2, %1, !dbg !129 // CHECK:STDOUT: store i32 %3, ptr %self, align 4, !dbg !129 @@ -239,7 +239,7 @@ fn For() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %self) #0 !dbg !139 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %self) #0 !dbg !139 { // CHECK:STDOUT: %1 = call i32 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.be1e879c1ad406d8"(i32 %self), !dbg !144 // CHECK:STDOUT: ret i32 %1, !dbg !145 // CHECK:STDOUT: } @@ -304,7 +304,7 @@ fn For() { // CHECK:STDOUT: !42 = !{!43} // CHECK:STDOUT: !43 = !DILocalVariable(arg: 1, scope: !41, type: !29) // CHECK:STDOUT: !44 = !DILocation(line: 20, column: 7, scope: !41) -// CHECK:STDOUT: !45 = distinct !DISubprogram(name: "Op", linkageName: "_COp.ab3effcb00e348a7:core.Destroy.Core", scope: null, file: !1, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !46) +// CHECK:STDOUT: !45 = distinct !DISubprogram(name: "Op", linkageName: "_COp.f9d363db90f1ff8b:core.Destroy.Core", scope: null, file: !1, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !46) // CHECK:STDOUT: !46 = !{!47} // CHECK:STDOUT: !47 = !DILocalVariable(arg: 1, scope: !45, type: !29) // CHECK:STDOUT: !48 = !DILocation(line: 20, column: 7, scope: !45) @@ -340,7 +340,7 @@ fn For() { // CHECK:STDOUT: !78 = !DILocation(line: 30, column: 9, scope: !64) // CHECK:STDOUT: !79 = !DILocation(line: 32, column: 16, scope: !64) // CHECK:STDOUT: !80 = !DILocation(line: 32, column: 9, scope: !64) -// CHECK:STDOUT: !81 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.95ac245efc335d3f", scope: null, file: !82, line: 36, type: !83, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !85) +// CHECK:STDOUT: !81 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.329ac87584bc77f7", scope: null, file: !82, line: 36, type: !83, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !85) // CHECK:STDOUT: !82 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !83 = !DISubroutineType(types: !84) // CHECK:STDOUT: !84 = !{!29, !29} @@ -348,7 +348,7 @@ fn For() { // CHECK:STDOUT: !86 = !DILocalVariable(arg: 1, scope: !81, type: !29) // CHECK:STDOUT: !87 = !DILocation(line: 37, column: 12, scope: !81) // CHECK:STDOUT: !88 = !DILocation(line: 37, column: 5, scope: !81) -// CHECK:STDOUT: !89 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.95ac245efc335d3f", scope: null, file: !82, line: 39, type: !58, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !90) +// CHECK:STDOUT: !89 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.329ac87584bc77f7", scope: null, file: !82, line: 39, type: !58, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !90) // CHECK:STDOUT: !90 = !{!91} // CHECK:STDOUT: !91 = !DILocalVariable(arg: 1, scope: !89, type: !29) // CHECK:STDOUT: !92 = !DILocation(line: 40, column: 12, scope: !89) @@ -359,14 +359,14 @@ fn For() { // CHECK:STDOUT: !97 = !DILocalVariable(arg: 1, scope: !94, type: !22) // CHECK:STDOUT: !98 = !DILocation(line: 398, column: 5, scope: !94) // CHECK:STDOUT: !99 = !DILocation(line: 396, column: 3, scope: !94) -// CHECK:STDOUT: !100 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.95ac245efc335d3f", scope: null, file: !82, line: 33, type: !101, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !103) +// CHECK:STDOUT: !100 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.329ac87584bc77f7", scope: null, file: !82, line: 33, type: !101, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !103) // CHECK:STDOUT: !101 = !DISubroutineType(types: !102) // CHECK:STDOUT: !102 = !{!29, !22} // CHECK:STDOUT: !103 = !{!104} // CHECK:STDOUT: !104 = !DILocalVariable(arg: 1, scope: !100, type: !22) // CHECK:STDOUT: !105 = !DILocation(line: 34, column: 12, scope: !100) // CHECK:STDOUT: !106 = !DILocation(line: 34, column: 5, scope: !100) -// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.95ac245efc335d3f", scope: null, file: !82, line: 30, type: !108, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.329ac87584bc77f7", scope: null, file: !82, line: 30, type: !108, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !108 = !DISubroutineType(types: !109) // CHECK:STDOUT: !109 = !{!29} // CHECK:STDOUT: !110 = !DILocation(line: 31, column: 12, scope: !107) @@ -381,7 +381,7 @@ fn For() { // CHECK:STDOUT: !119 = !DILocalVariable(arg: 1, scope: !117, type: !29) // CHECK:STDOUT: !120 = !DILocation(line: 145, column: 12, scope: !117) // CHECK:STDOUT: !121 = !DILocation(line: 145, column: 5, scope: !117) -// CHECK:STDOUT: !122 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !95, line: 331, type: !123, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !125) +// CHECK:STDOUT: !122 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !95, line: 331, type: !123, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !125) // CHECK:STDOUT: !123 = !DISubroutineType(types: !124) // CHECK:STDOUT: !124 = !{null, !22, !22} // CHECK:STDOUT: !125 = !{!126, !127} @@ -398,7 +398,7 @@ fn For() { // CHECK:STDOUT: !136 = distinct !DISubprogram(name: "None", linkageName: "_CNone.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a", scope: null, file: !82, line: 125, type: !108, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !137 = !DILocation(line: 128, column: 5, scope: !136) // CHECK:STDOUT: !138 = !DILocation(line: 129, column: 5, scope: !136) -// CHECK:STDOUT: !139 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47", scope: null, file: !95, line: 64, type: !140, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !142) +// CHECK:STDOUT: !139 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659", scope: null, file: !95, line: 64, type: !140, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !142) // CHECK:STDOUT: !140 = !DISubroutineType(types: !141) // CHECK:STDOUT: !141 = !{!22, !22} // CHECK:STDOUT: !142 = !{!143} diff --git a/toolchain/lower/testdata/for/for.carbon b/toolchain/lower/testdata/for/for.carbon index 136ec2cd44bb..35f7af59e2d5 100644 --- a/toolchain/lower/testdata/for/for.carbon +++ b/toolchain/lower/testdata/for/for.carbon @@ -51,17 +51,17 @@ fn For() { // CHECK:STDOUT: for.next: ; preds = %for.body, %entry // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc21_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_CNext.IntRange.9452f4c51951679b.Core:Iterate.Core.be1e879c1ad406d8"(ptr %.loc21_33.1.temp, ptr %.loc21_32.1.temp, ptr %var), !dbg !8 -// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.95ac245efc335d3f(ptr %.loc21_33.1.temp), !dbg !8 +// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.329ac87584bc77f7(ptr %.loc21_33.1.temp), !dbg !8 // CHECK:STDOUT: br i1 %Optional.HasValue.call, label %for.body, label %for.done, !dbg !8 // CHECK:STDOUT: // CHECK:STDOUT: for.body: ; preds = %for.next -// CHECK:STDOUT: %Optional.Get.call = call i32 @_CGet.Optional.Core.95ac245efc335d3f(ptr %.loc21_33.1.temp), !dbg !8 +// CHECK:STDOUT: %Optional.Get.call = call i32 @_CGet.Optional.Core.329ac87584bc77f7(ptr %.loc21_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @_CG.Main(), !dbg !10 // CHECK:STDOUT: br label %for.next, !dbg !11 // CHECK:STDOUT: // CHECK:STDOUT: for.done: ; preds = %for.next // CHECK:STDOUT: call void @_CH.Main(), !dbg !12 -// CHECK:STDOUT: call void @"_COp.ab3effcb00e348a7:core.Destroy.Core"(ptr %.loc21_33.1.temp), !dbg !8 +// CHECK:STDOUT: call void @"_COp.f9d363db90f1ff8b:core.Destroy.Core"(ptr %.loc21_33.1.temp), !dbg !8 // CHECK:STDOUT: call void @"_COp.5e27612b9dd31a14:core.Destroy.Core"(ptr %var), !dbg !8 // CHECK:STDOUT: call void @"_COp.0d5da2659ce22e5f:core.Destroy.Core"(ptr %.loc21_32.1.temp), !dbg !7 // CHECK:STDOUT: ret void, !dbg !13 @@ -102,7 +102,7 @@ fn For() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.ab3effcb00e348a7:core.Destroy.Core"(ptr %self) #0 !dbg !41 { +// CHECK:STDOUT: define weak_odr void @"_COp.f9d363db90f1ff8b:core.Destroy.Core"(ptr %self) #0 !dbg !41 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !44 // CHECK:STDOUT: } @@ -144,24 +144,24 @@ fn For() { // CHECK:STDOUT: 6: ; preds = %0 // CHECK:STDOUT: call void @"_COp.Int.9452f4c51951679b.Core:Inc.Core.be1e879c1ad406d8"(ptr %cursor), !dbg !71 // CHECK:STDOUT: %7 = load i32, ptr %1, align 4, !dbg !72 -// CHECK:STDOUT: call void @_CSome.Optional.Core.95ac245efc335d3f(ptr %return, i32 %7), !dbg !73 +// CHECK:STDOUT: call void @_CSome.Optional.Core.329ac87584bc77f7(ptr %return, i32 %7), !dbg !73 // CHECK:STDOUT: call void @"_COp.5e27612b9dd31a14:core.Destroy.Core"(ptr %1), !dbg !66 // CHECK:STDOUT: ret void, !dbg !74 // CHECK:STDOUT: // CHECK:STDOUT: 8: ; preds = %0 -// CHECK:STDOUT: call void @_CNone.Optional.Core.95ac245efc335d3f(ptr %return), !dbg !75 +// CHECK:STDOUT: call void @_CNone.Optional.Core.329ac87584bc77f7(ptr %return), !dbg !75 // CHECK:STDOUT: call void @"_COp.5e27612b9dd31a14:core.Destroy.Core"(ptr %1), !dbg !66 // CHECK:STDOUT: ret void, !dbg !76 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.95ac245efc335d3f(ptr %self) #0 !dbg !77 { +// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.329ac87584bc77f7(ptr %self) #0 !dbg !77 { // CHECK:STDOUT: %1 = call i1 @"_CHas.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a"(ptr %self), !dbg !83 // CHECK:STDOUT: ret i1 %1, !dbg !84 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @_CGet.Optional.Core.95ac245efc335d3f(ptr %self) #0 !dbg !85 { +// CHECK:STDOUT: define linkonce_odr i32 @_CGet.Optional.Core.329ac87584bc77f7(ptr %self) #0 !dbg !85 { // CHECK:STDOUT: %1 = call i32 @"_CGet.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a"(ptr %self), !dbg !88 // CHECK:STDOUT: ret i32 %1, !dbg !89 // CHECK:STDOUT: } @@ -170,18 +170,18 @@ fn For() { // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr void @"_COp.Int.9452f4c51951679b.Core:Inc.Core.be1e879c1ad406d8"(ptr %self) #0 !dbg !90 { -// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 1), !dbg !94 +// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 1), !dbg !94 // CHECK:STDOUT: ret void, !dbg !95 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.95ac245efc335d3f(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !96 { +// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.329ac87584bc77f7(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !96 { // CHECK:STDOUT: call void @"_CSome.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a"(ptr %return, i32 %value), !dbg !101 // CHECK:STDOUT: ret void, !dbg !102 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.95ac245efc335d3f(ptr sret(<{ i32, i1 }>) %return) #0 !dbg !103 { +// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.329ac87584bc77f7(ptr sret(<{ i32, i1 }>) %return) #0 !dbg !103 { // CHECK:STDOUT: call void @"_CNone.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a"(ptr %return), !dbg !106 // CHECK:STDOUT: ret void, !dbg !107 // CHECK:STDOUT: } @@ -202,8 +202,8 @@ fn For() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: alwaysinline nounwind -// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 %other) #2 !dbg !118 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %other), !dbg !124 +// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 %other) #2 !dbg !118 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %other), !dbg !124 // CHECK:STDOUT: %2 = load i32, ptr %self, align 4, !dbg !125 // CHECK:STDOUT: %3 = add i32 %2, %1, !dbg !125 // CHECK:STDOUT: store i32 %3, ptr %self, align 4, !dbg !125 @@ -227,7 +227,7 @@ fn For() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %self) #0 !dbg !135 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %self) #0 !dbg !135 { // CHECK:STDOUT: %1 = call i32 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.be1e879c1ad406d8"(i32 %self), !dbg !140 // CHECK:STDOUT: ret i32 %1, !dbg !141 // CHECK:STDOUT: } @@ -288,7 +288,7 @@ fn For() { // CHECK:STDOUT: !38 = !{!39} // CHECK:STDOUT: !39 = !DILocalVariable(arg: 1, scope: !37, type: !25) // CHECK:STDOUT: !40 = !DILocation(line: 21, column: 7, scope: !37) -// CHECK:STDOUT: !41 = distinct !DISubprogram(name: "Op", linkageName: "_COp.ab3effcb00e348a7:core.Destroy.Core", scope: null, file: !1, line: 21, type: !23, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !42) +// CHECK:STDOUT: !41 = distinct !DISubprogram(name: "Op", linkageName: "_COp.f9d363db90f1ff8b:core.Destroy.Core", scope: null, file: !1, line: 21, type: !23, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !42) // CHECK:STDOUT: !42 = !{!43} // CHECK:STDOUT: !43 = !DILocalVariable(arg: 1, scope: !41, type: !25) // CHECK:STDOUT: !44 = !DILocation(line: 21, column: 7, scope: !41) @@ -324,7 +324,7 @@ fn For() { // CHECK:STDOUT: !74 = !DILocation(line: 30, column: 9, scope: !60) // CHECK:STDOUT: !75 = !DILocation(line: 32, column: 16, scope: !60) // CHECK:STDOUT: !76 = !DILocation(line: 32, column: 9, scope: !60) -// CHECK:STDOUT: !77 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.95ac245efc335d3f", scope: null, file: !78, line: 36, type: !79, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !81) +// CHECK:STDOUT: !77 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.329ac87584bc77f7", scope: null, file: !78, line: 36, type: !79, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !81) // CHECK:STDOUT: !78 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !79 = !DISubroutineType(types: !80) // CHECK:STDOUT: !80 = !{!25, !25} @@ -332,7 +332,7 @@ fn For() { // CHECK:STDOUT: !82 = !DILocalVariable(arg: 1, scope: !77, type: !25) // CHECK:STDOUT: !83 = !DILocation(line: 37, column: 12, scope: !77) // CHECK:STDOUT: !84 = !DILocation(line: 37, column: 5, scope: !77) -// CHECK:STDOUT: !85 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.95ac245efc335d3f", scope: null, file: !78, line: 39, type: !54, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !86) +// CHECK:STDOUT: !85 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.329ac87584bc77f7", scope: null, file: !78, line: 39, type: !54, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !86) // CHECK:STDOUT: !86 = !{!87} // CHECK:STDOUT: !87 = !DILocalVariable(arg: 1, scope: !85, type: !25) // CHECK:STDOUT: !88 = !DILocation(line: 40, column: 12, scope: !85) @@ -343,14 +343,14 @@ fn For() { // CHECK:STDOUT: !93 = !DILocalVariable(arg: 1, scope: !90, type: !18) // CHECK:STDOUT: !94 = !DILocation(line: 398, column: 5, scope: !90) // CHECK:STDOUT: !95 = !DILocation(line: 396, column: 3, scope: !90) -// CHECK:STDOUT: !96 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.95ac245efc335d3f", scope: null, file: !78, line: 33, type: !97, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !99) +// CHECK:STDOUT: !96 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.329ac87584bc77f7", scope: null, file: !78, line: 33, type: !97, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !99) // CHECK:STDOUT: !97 = !DISubroutineType(types: !98) // CHECK:STDOUT: !98 = !{!25, !18} // CHECK:STDOUT: !99 = !{!100} // CHECK:STDOUT: !100 = !DILocalVariable(arg: 1, scope: !96, type: !18) // CHECK:STDOUT: !101 = !DILocation(line: 34, column: 12, scope: !96) // CHECK:STDOUT: !102 = !DILocation(line: 34, column: 5, scope: !96) -// CHECK:STDOUT: !103 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.95ac245efc335d3f", scope: null, file: !78, line: 30, type: !104, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !103 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.329ac87584bc77f7", scope: null, file: !78, line: 30, type: !104, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !104 = !DISubroutineType(types: !105) // CHECK:STDOUT: !105 = !{!25} // CHECK:STDOUT: !106 = !DILocation(line: 31, column: 12, scope: !103) @@ -365,7 +365,7 @@ fn For() { // CHECK:STDOUT: !115 = !DILocalVariable(arg: 1, scope: !113, type: !25) // CHECK:STDOUT: !116 = !DILocation(line: 145, column: 12, scope: !113) // CHECK:STDOUT: !117 = !DILocation(line: 145, column: 5, scope: !113) -// CHECK:STDOUT: !118 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !91, line: 331, type: !119, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !121) +// CHECK:STDOUT: !118 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.d395a13f81aa0e29.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !91, line: 331, type: !119, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !121) // CHECK:STDOUT: !119 = !DISubroutineType(types: !120) // CHECK:STDOUT: !120 = !{null, !18, !18} // CHECK:STDOUT: !121 = !{!122, !123} @@ -382,7 +382,7 @@ fn For() { // CHECK:STDOUT: !132 = distinct !DISubprogram(name: "None", linkageName: "_CNone.5d6f3f3a4b44a8f1:OptionalStorage.Core.39417379e302314a", scope: null, file: !78, line: 125, type: !104, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !133 = !DILocation(line: 128, column: 5, scope: !132) // CHECK:STDOUT: !134 = !DILocation(line: 129, column: 5, scope: !132) -// CHECK:STDOUT: !135 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47", scope: null, file: !91, line: 64, type: !136, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !138) +// CHECK:STDOUT: !135 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659", scope: null, file: !91, line: 64, type: !136, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !138) // CHECK:STDOUT: !136 = !DISubroutineType(types: !137) // CHECK:STDOUT: !137 = !{!18, !18} // CHECK:STDOUT: !138 = !{!139} diff --git a/toolchain/lower/testdata/function/generic/call_different_associated_const.carbon b/toolchain/lower/testdata/function/generic/call_different_associated_const.carbon index a2963c6bc749..e942bf4ffb37 100644 --- a/toolchain/lower/testdata/function/generic/call_different_associated_const.carbon +++ b/toolchain/lower/testdata/function/generic/call_different_associated_const.carbon @@ -44,13 +44,13 @@ fn H() { // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CH.Main() #0 !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CG.Main.b78152d23f5a56c7(), !dbg !7 -// CHECK:STDOUT: call void @_CG.Main.1ba7ae4c6ee83247(), !dbg !8 +// CHECK:STDOUT: call void @_CG.Main.c7b5696da1f8b34f(), !dbg !7 +// CHECK:STDOUT: call void @_CG.Main.726001587f235b1b(), !dbg !8 // CHECK:STDOUT: ret void, !dbg !9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CG.Main.b78152d23f5a56c7() #0 !dbg !10 { +// CHECK:STDOUT: define linkonce_odr void @_CG.Main.c7b5696da1f8b34f() #0 !dbg !10 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %_.var = alloca ptr, align 8, !dbg !11 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var), !dbg !11 @@ -59,7 +59,7 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CG.Main.1ba7ae4c6ee83247() #0 !dbg !13 { +// CHECK:STDOUT: define linkonce_odr void @_CG.Main.726001587f235b1b() #0 !dbg !13 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %_.var = alloca ptr, align 8, !dbg !14 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var), !dbg !14 @@ -89,10 +89,10 @@ fn H() { // CHECK:STDOUT: !7 = !DILocation(line: 36, column: 3, scope: !4) // CHECK:STDOUT: !8 = !DILocation(line: 37, column: 3, scope: !4) // CHECK:STDOUT: !9 = !DILocation(line: 35, column: 1, scope: !4) -// CHECK:STDOUT: !10 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.b78152d23f5a56c7", scope: null, file: !1, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !10 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.c7b5696da1f8b34f", scope: null, file: !1, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !11 = !DILocation(line: 23, column: 3, scope: !10) // CHECK:STDOUT: !12 = !DILocation(line: 22, column: 1, scope: !10) -// CHECK:STDOUT: !13 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.1ba7ae4c6ee83247", scope: null, file: !1, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !13 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.726001587f235b1b", scope: null, file: !1, line: 22, type: !5, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !14 = !DILocation(line: 23, column: 3, scope: !13) // CHECK:STDOUT: !15 = !DILocation(line: 22, column: 1, scope: !13) // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon b/toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon index 3de6122bae5d..7d1e6dcca42c 100644 --- a/toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon +++ b/toolchain/lower/testdata/function/generic/call_different_impls_with_const.carbon @@ -71,15 +71,15 @@ fn Run() { // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @main() #0 !dbg !22 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CG.Main.7329ec068e7cb0e6(), !dbg !23 -// CHECK:STDOUT: call void @_CG.Main.89fa38d00ffc0e46(), !dbg !24 +// CHECK:STDOUT: call void @_CG.Main.e2c7a58ecf9ad23e(), !dbg !23 +// CHECK:STDOUT: call void @_CG.Main.01a101e5421592ac(), !dbg !24 // CHECK:STDOUT: ret i32 0, !dbg !25 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: declare i32 @printf(ptr, ...) // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CG.Main.7329ec068e7cb0e6() #0 !dbg !26 { +// CHECK:STDOUT: define linkonce_odr void @_CG.Main.e2c7a58ecf9ad23e() #0 !dbg !26 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc37_20.1.temp = alloca i1, align 1, !dbg !29 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc37_20.1.temp), !dbg !29 @@ -92,7 +92,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CG.Main.89fa38d00ffc0e46() #0 !dbg !31 { +// CHECK:STDOUT: define linkonce_odr void @_CG.Main.01a101e5421592ac() #0 !dbg !31 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc37_20.1.temp = alloca i32, align 4, !dbg !32 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc37_20.1.temp), !dbg !32 @@ -142,12 +142,12 @@ fn Run() { // CHECK:STDOUT: !23 = !DILocation(line: 41, column: 3, scope: !22) // CHECK:STDOUT: !24 = !DILocation(line: 42, column: 3, scope: !22) // CHECK:STDOUT: !25 = !DILocation(line: 40, column: 1, scope: !22) -// CHECK:STDOUT: !26 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.7329ec068e7cb0e6", scope: null, file: !1, line: 36, type: !27, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !26 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.e2c7a58ecf9ad23e", scope: null, file: !1, line: 36, type: !27, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !27 = !DISubroutineType(types: !28) // CHECK:STDOUT: !28 = !{null} // CHECK:STDOUT: !29 = !DILocation(line: 37, column: 16, scope: !26) // CHECK:STDOUT: !30 = !DILocation(line: 36, column: 1, scope: !26) -// CHECK:STDOUT: !31 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.89fa38d00ffc0e46", scope: null, file: !1, line: 36, type: !27, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !31 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main.01a101e5421592ac", scope: null, file: !1, line: 36, type: !27, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !32 = !DILocation(line: 37, column: 16, scope: !31) // CHECK:STDOUT: !33 = !DILocation(line: 36, column: 1, scope: !31) // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/interop/cpp/nullptr.carbon b/toolchain/lower/testdata/interop/cpp/nullptr.carbon index 2dadba17bad6..a00464a68cd0 100644 --- a/toolchain/lower/testdata/interop/cpp/nullptr.carbon +++ b/toolchain/lower/testdata/interop/cpp/nullptr.carbon @@ -60,7 +60,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc12_18.2.temp = alloca ptr, align 8, !dbg !14 // CHECK:STDOUT: %.loc14_22.1.temp = alloca ptr, align 8, !dbg !15 -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.269b9b75d033aabb.Core.84588f41d61dafba"(ptr poison), !dbg !14 +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.f8357062f5b0e57c.Core.84588f41d61dafba"(ptr poison), !dbg !14 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc12_18.2.temp), !dbg !14 // CHECK:STDOUT: store ptr %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call, ptr %.loc12_18.2.temp, align 8, !dbg !14 // CHECK:STDOUT: %.loc12_18.4 = load ptr, ptr %.loc12_18.2.temp, align 8, !dbg !14 @@ -70,7 +70,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: store ptr %Cpp.nullptr_t.as.Copy.impl.Op.call, ptr %.loc14_22.1.temp, align 8, !dbg !15 // CHECK:STDOUT: call void @_Z11TakeNullptrDn.carbon_thunk._(ptr %.loc14_22.1.temp), !dbg !17 // CHECK:STDOUT: call void @"_COp.37a0be3fec6961f4:core.Destroy.Core"(ptr %.loc14_22.1.temp), !dbg !15 -// CHECK:STDOUT: call void @"_COp.197d85846f87d79f:core.Destroy.Core"(ptr %.loc12_18.2.temp), !dbg !14 +// CHECK:STDOUT: call void @"_COp.9a41840f34ccc47a:core.Destroy.Core"(ptr %.loc12_18.2.temp), !dbg !14 // CHECK:STDOUT: ret void, !dbg !18 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -119,7 +119,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.197d85846f87d79f:core.Destroy.Core"(ptr %self) #0 !dbg !45 { +// CHECK:STDOUT: define weak_odr void @"_COp.9a41840f34ccc47a:core.Destroy.Core"(ptr %self) #0 !dbg !45 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !48 // CHECK:STDOUT: } @@ -151,7 +151,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %a.var), !dbg !60 // CHECK:STDOUT: call void @_Z13ReturnNullptrv.carbon_thunk.(ptr %a.var), !dbg !61 // CHECK:STDOUT: %.loc28_10 = load ptr, ptr %a.var, align 8, !dbg !62 -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.269b9b75d033aabb.Core.84588f41d61dafba"(ptr %.loc28_10), !dbg !63 +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.f8357062f5b0e57c.Core.84588f41d61dafba"(ptr %.loc28_10), !dbg !63 // CHECK:STDOUT: call void @"_COp.37a0be3fec6961f4:core.Destroy.Core"(ptr %a.var), !dbg !60 // CHECK:STDOUT: ret ptr %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call, !dbg !63 // CHECK:STDOUT: } @@ -174,7 +174,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc32_28.1.temp), !dbg !67 // CHECK:STDOUT: call void @_Z13ReturnNullptrv.carbon_thunk.(ptr %.loc32_28.1.temp), !dbg !67 // CHECK:STDOUT: %.loc32_28.4 = load ptr, ptr %.loc32_28.1.temp, align 8, !dbg !67 -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.269b9b75d033aabb.Core.84588f41d61dafba"(ptr %.loc32_28.4), !dbg !68 +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.f8357062f5b0e57c.Core.84588f41d61dafba"(ptr %.loc32_28.4), !dbg !68 // CHECK:STDOUT: call void @"_COp.37a0be3fec6961f4:core.Destroy.Core"(ptr %.loc32_28.1.temp), !dbg !67 // CHECK:STDOUT: ret ptr %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call, !dbg !68 // CHECK:STDOUT: } @@ -182,13 +182,13 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define ptr @_CConvertNullptrConstant.Main() #0 !dbg !69 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.269b9b75d033aabb.Core.84588f41d61dafba"(ptr poison), !dbg !70 +// CHECK:STDOUT: %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.f8357062f5b0e57c.Core.84588f41d61dafba"(ptr poison), !dbg !70 // CHECK:STDOUT: ret ptr %Cpp.nullptr_t.as.ImplicitAs.impl.Convert.call, !dbg !70 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.269b9b75d033aabb.Core.84588f41d61dafba"(ptr %self) #0 !dbg !71 { -// CHECK:STDOUT: %1 = call ptr @_CNone.Optional.Core.a636f8d928e21310(), !dbg !77 +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.f8357062f5b0e57c.Core.84588f41d61dafba"(ptr %self) #0 !dbg !71 { +// CHECK:STDOUT: %1 = call ptr @_CNone.Optional.Core.0a6122c87ac9ba0f(), !dbg !77 // CHECK:STDOUT: ret ptr %1, !dbg !78 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -198,7 +198,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: declare ptr @_CMake.NullptrT.CppCompat.Core() // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @_CNone.Optional.Core.a636f8d928e21310() #0 !dbg !79 { +// CHECK:STDOUT: define linkonce_odr ptr @_CNone.Optional.Core.0a6122c87ac9ba0f() #0 !dbg !79 { // CHECK:STDOUT: ret ptr null, !dbg !81 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -207,7 +207,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: declare ptr @_Z13ReturnNullptrv() #1 // CHECK:STDOUT: // CHECK:STDOUT: ; uselistorder directives -// CHECK:STDOUT: uselistorder ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.269b9b75d033aabb.Core.84588f41d61dafba", { 3, 2, 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.NullptrT.CppCompat.Core:ImplicitAs.f8357062f5b0e57c.Core.84588f41d61dafba", { 3, 2, 1, 0 } // CHECK:STDOUT: uselistorder ptr @llvm.lifetime.start.p0, { 4, 3, 2, 1, 0 } // CHECK:STDOUT: // CHECK:STDOUT: attributes #0 = { nounwind } @@ -264,7 +264,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: !42 = !{!43} // CHECK:STDOUT: !43 = !DILocalVariable(arg: 1, scope: !41, type: !25) // CHECK:STDOUT: !44 = !DILocation(line: 12, column: 15, scope: !41) -// CHECK:STDOUT: !45 = distinct !DISubprogram(name: "Op", linkageName: "_COp.197d85846f87d79f:core.Destroy.Core", scope: null, file: !1, line: 12, type: !23, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !46) +// CHECK:STDOUT: !45 = distinct !DISubprogram(name: "Op", linkageName: "_COp.9a41840f34ccc47a:core.Destroy.Core", scope: null, file: !1, line: 12, type: !23, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !46) // CHECK:STDOUT: !46 = !{!47} // CHECK:STDOUT: !47 = !DILocalVariable(arg: 1, scope: !45, type: !25) // CHECK:STDOUT: !48 = !DILocation(line: 12, column: 15, scope: !45) @@ -290,7 +290,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: !68 = !DILocation(line: 32, column: 3, scope: !66) // CHECK:STDOUT: !69 = distinct !DISubprogram(name: "ConvertNullptrConstant", linkageName: "_CConvertNullptrConstant.Main", scope: null, file: !1, line: 35, type: !50, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !70 = !DILocation(line: 36, column: 3, scope: !69) -// CHECK:STDOUT: !71 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.NullptrT.CppCompat.Core:ImplicitAs.269b9b75d033aabb.Core.84588f41d61dafba", scope: null, file: !72, line: 51, type: !73, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !75) +// CHECK:STDOUT: !71 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.NullptrT.CppCompat.Core:ImplicitAs.f8357062f5b0e57c.Core.84588f41d61dafba", scope: null, file: !72, line: 51, type: !73, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !75) // CHECK:STDOUT: !72 = !DIFile(filename: "{{.*}}/prelude/types/cpp/nullptr.carbon", directory: "") // CHECK:STDOUT: !73 = !DISubroutineType(types: !74) // CHECK:STDOUT: !74 = !{!25, !25} @@ -298,7 +298,7 @@ fn ConvertNullptrConstant() -> Core.Optional(i32*) { // CHECK:STDOUT: !76 = !DILocalVariable(arg: 1, scope: !71, type: !25) // CHECK:STDOUT: !77 = !DILocation(line: 52, column: 14, scope: !71) // CHECK:STDOUT: !78 = !DILocation(line: 52, column: 7, scope: !71) -// CHECK:STDOUT: !79 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.a636f8d928e21310", scope: null, file: !80, line: 30, type: !50, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !79 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.0a6122c87ac9ba0f", scope: null, file: !80, line: 30, type: !50, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !80 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !81 = !DILocation(line: 31, column: 5, scope: !79) // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/interop/cpp/pointer.carbon b/toolchain/lower/testdata/interop/cpp/pointer.carbon index 56952022b005..9dd00cc32f9f 100644 --- a/toolchain/lower/testdata/interop/cpp/pointer.carbon +++ b/toolchain/lower/testdata/interop/cpp/pointer.carbon @@ -221,12 +221,12 @@ fn Convert() { // CHECK:STDOUT: define void @_CPassNonnullPtr.Main(ptr %p) #0 !dbg !18 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc22_15.2.temp = alloca ptr, align 8, !dbg !21 -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0df7ee04ac3e2bca"(ptr %p), !dbg !21 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.718daad32622d4f5"(ptr %p), !dbg !21 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc22_15.2.temp), !dbg !21 // CHECK:STDOUT: store ptr %U.as_type.as.ImplicitAs.impl.Convert.call, ptr %.loc22_15.2.temp, align 8, !dbg !21 // CHECK:STDOUT: %.loc22_15.4 = load ptr, ptr %.loc22_15.2.temp, align 8, !dbg !21 // CHECK:STDOUT: call void @_Z7TakePtrP1C(ptr %.loc22_15.4), !dbg !22 -// CHECK:STDOUT: call void @"_COp.f38d07f92d84f295:core.Destroy.Core"(ptr %.loc22_15.2.temp), !dbg !21 +// CHECK:STDOUT: call void @"_COp.1341c5e44ed8ed9c:core.Destroy.Core"(ptr %.loc22_15.2.temp), !dbg !21 // CHECK:STDOUT: ret void, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -245,7 +245,7 @@ fn Convert() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.f38d07f92d84f295:core.Destroy.Core"(ptr %self) #0 !dbg !32 { +// CHECK:STDOUT: define weak_odr void @"_COp.1341c5e44ed8ed9c:core.Destroy.Core"(ptr %self) #0 !dbg !32 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !35 // CHECK:STDOUT: } @@ -269,12 +269,12 @@ fn Convert() { // CHECK:STDOUT: define void @_CPassNonnullPtrWithThunk.Main(ptr %p) #0 !dbg !45 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc35_24.2.temp = alloca ptr, align 8, !dbg !48 -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0df7ee04ac3e2bca"(ptr %p), !dbg !48 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.718daad32622d4f5"(ptr %p), !dbg !48 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc35_24.2.temp), !dbg !48 // CHECK:STDOUT: store ptr %U.as_type.as.ImplicitAs.impl.Convert.call, ptr %.loc35_24.2.temp, align 8, !dbg !48 // CHECK:STDOUT: %.loc35_24.4 = load ptr, ptr %.loc35_24.2.temp, align 8, !dbg !48 // CHECK:STDOUT: call void @_Z16TakePtrWithThunkP1Ci.carbon_thunk._(ptr %.loc35_24.4), !dbg !49 -// CHECK:STDOUT: call void @"_COp.f38d07f92d84f295:core.Destroy.Core"(ptr %.loc35_24.2.temp), !dbg !48 +// CHECK:STDOUT: call void @"_COp.1341c5e44ed8ed9c:core.Destroy.Core"(ptr %.loc35_24.2.temp), !dbg !48 // CHECK:STDOUT: ret void, !dbg !50 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -303,8 +303,8 @@ fn Convert() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0df7ee04ac3e2bca"(ptr %self) #0 !dbg !57 { -// CHECK:STDOUT: %1 = call ptr @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.ce205433e72b0023"(ptr %self), !dbg !63 +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.718daad32622d4f5"(ptr %self) #0 !dbg !57 { +// CHECK:STDOUT: %1 = call ptr @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.9437b281f77355fe"(ptr %self), !dbg !63 // CHECK:STDOUT: ret ptr %1, !dbg !64 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -312,13 +312,13 @@ fn Convert() { // CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #3 // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.ce205433e72b0023"(ptr %self) #0 !dbg !65 { -// CHECK:STDOUT: %1 = call ptr @_CSome.Optional.Core.ce205433e72b0023(ptr %self), !dbg !68 +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.9437b281f77355fe"(ptr %self) #0 !dbg !65 { +// CHECK:STDOUT: %1 = call ptr @_CSome.Optional.Core.9437b281f77355fe(ptr %self), !dbg !68 // CHECK:STDOUT: ret ptr %1, !dbg !69 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.ce205433e72b0023(ptr %value) #0 !dbg !70 { +// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.9437b281f77355fe(ptr %value) #0 !dbg !70 { // CHECK:STDOUT: %1 = call ptr @"_CSome.e8f8f92d3d08d149:OptionalStorage.Core.fc8b3e0dc71c345e"(ptr %value), !dbg !73 // CHECK:STDOUT: ret ptr %1, !dbg !74 // CHECK:STDOUT: } @@ -339,7 +339,7 @@ fn Convert() { // CHECK:STDOUT: declare noundef ptr @_Z18ReturnPtrWithThunki(i32 noundef) #1 // CHECK:STDOUT: // CHECK:STDOUT: ; uselistorder directives -// CHECK:STDOUT: uselistorder ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0df7ee04ac3e2bca", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.718daad32622d4f5", { 1, 0 } // CHECK:STDOUT: uselistorder ptr @llvm.lifetime.start.p0, { 0, 2, 1 } // CHECK:STDOUT: // CHECK:STDOUT: attributes #0 = { nounwind } @@ -383,7 +383,7 @@ fn Convert() { // CHECK:STDOUT: !29 = !{!30} // CHECK:STDOUT: !30 = !DILocalVariable(arg: 1, scope: !28, type: !14) // CHECK:STDOUT: !31 = !DILocation(line: 22, column: 15, scope: !28) -// CHECK:STDOUT: !32 = distinct !DISubprogram(name: "Op", linkageName: "_COp.f38d07f92d84f295:core.Destroy.Core", scope: null, file: !1, line: 22, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) +// CHECK:STDOUT: !32 = distinct !DISubprogram(name: "Op", linkageName: "_COp.1341c5e44ed8ed9c:core.Destroy.Core", scope: null, file: !1, line: 22, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !33) // CHECK:STDOUT: !33 = !{!34} // CHECK:STDOUT: !34 = !DILocalVariable(arg: 1, scope: !32, type: !14) // CHECK:STDOUT: !35 = !DILocation(line: 22, column: 15, scope: !32) @@ -408,7 +408,7 @@ fn Convert() { // CHECK:STDOUT: !54 = distinct !DISubprogram(name: "ReturnPtrWithThunk", linkageName: "_CReturnPtrWithThunk.Main", scope: null, file: !1, line: 38, type: !37, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !55 = !DILocation(line: 39, column: 10, scope: !54) // CHECK:STDOUT: !56 = !DILocation(line: 39, column: 3, scope: !54) -// CHECK:STDOUT: !57 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0df7ee04ac3e2bca", scope: null, file: !58, line: 105, type: !59, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !61) +// CHECK:STDOUT: !57 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.718daad32622d4f5", scope: null, file: !58, line: 105, type: !59, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !61) // CHECK:STDOUT: !58 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !59 = !DISubroutineType(types: !60) // CHECK:STDOUT: !60 = !{!14, !14} @@ -416,12 +416,12 @@ fn Convert() { // CHECK:STDOUT: !62 = !DILocalVariable(arg: 1, scope: !57, type: !14) // CHECK:STDOUT: !63 = !DILocation(line: 106, column: 12, scope: !57) // CHECK:STDOUT: !64 = !DILocation(line: 106, column: 5, scope: !57) -// CHECK:STDOUT: !65 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.ce205433e72b0023", scope: null, file: !58, line: 80, type: !59, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !66) +// CHECK:STDOUT: !65 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.9437b281f77355fe", scope: null, file: !58, line: 80, type: !59, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !66) // CHECK:STDOUT: !66 = !{!67} // CHECK:STDOUT: !67 = !DILocalVariable(arg: 1, scope: !65, type: !14) // CHECK:STDOUT: !68 = !DILocation(line: 81, column: 12, scope: !65) // CHECK:STDOUT: !69 = !DILocation(line: 81, column: 5, scope: !65) -// CHECK:STDOUT: !70 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.ce205433e72b0023", scope: null, file: !58, line: 33, type: !59, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !71) +// CHECK:STDOUT: !70 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.9437b281f77355fe", scope: null, file: !58, line: 33, type: !59, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !71) // CHECK:STDOUT: !71 = !{!72} // CHECK:STDOUT: !72 = !DILocalVariable(arg: 1, scope: !70, type: !14) // CHECK:STDOUT: !73 = !DILocation(line: 34, column: 12, scope: !70) @@ -449,13 +449,13 @@ fn Convert() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc9_21.1.temp), !dbg !14 // CHECK:STDOUT: store ptr %make.call, ptr %.loc9_21.1.temp, align 8, !dbg !14 // CHECK:STDOUT: %.loc9_21.3 = load ptr, ptr %.loc9_21.1.temp, align 8, !dbg !14 -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.26284956f90c5004"(ptr %.loc9_21.3), !dbg !14 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.4ac926a9bb296667"(ptr %.loc9_21.3), !dbg !14 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc9_21.5.temp), !dbg !14 // CHECK:STDOUT: store ptr %U.as_type.as.ImplicitAs.impl.Convert.call, ptr %.loc9_21.5.temp, align 8, !dbg !14 // CHECK:STDOUT: %.loc9_21.7 = load ptr, ptr %.loc9_21.5.temp, align 8, !dbg !14 // CHECK:STDOUT: call void @_Z4takePK1C(ptr %.loc9_21.7), !dbg !15 -// CHECK:STDOUT: call void @"_COp.4713799e8769f265:core.Destroy.Core"(ptr %.loc9_21.5.temp), !dbg !14 -// CHECK:STDOUT: call void @"_COp.2b115399396a8344:core.Destroy.Core"(ptr %.loc9_21.1.temp), !dbg !14 +// CHECK:STDOUT: call void @"_COp.5a309bcb12d98030:core.Destroy.Core"(ptr %.loc9_21.5.temp), !dbg !14 +// CHECK:STDOUT: call void @"_COp.50147b96cc245a5c:core.Destroy.Core"(ptr %.loc9_21.1.temp), !dbg !14 // CHECK:STDOUT: ret void, !dbg !16 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -476,7 +476,7 @@ fn Convert() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.4713799e8769f265:core.Destroy.Core"(ptr %self) #0 !dbg !28 { +// CHECK:STDOUT: define weak_odr void @"_COp.5a309bcb12d98030:core.Destroy.Core"(ptr %self) #0 !dbg !28 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !31 // CHECK:STDOUT: } @@ -494,7 +494,7 @@ fn Convert() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.2b115399396a8344:core.Destroy.Core"(ptr %self) #0 !dbg !40 { +// CHECK:STDOUT: define weak_odr void @"_COp.50147b96cc245a5c:core.Destroy.Core"(ptr %self) #0 !dbg !40 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !43 // CHECK:STDOUT: } @@ -503,54 +503,54 @@ fn Convert() { // CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #2 // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.26284956f90c5004"(ptr %self) #0 !dbg !44 { -// CHECK:STDOUT: %1 = call ptr @"_CConvert.Optional.c661605f12aa337a.Core:OptionalAs.1dac4564233fecd1.Core.ba0bf13f1b5bc657"(ptr %self), !dbg !50 +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.4ac926a9bb296667"(ptr %self) #0 !dbg !44 { +// CHECK:STDOUT: %1 = call ptr @"_CConvert.Optional.c661605f12aa337a.Core:OptionalAs.1dac4564233fecd1.Core.cdbe4154b421df5e"(ptr %self), !dbg !50 // CHECK:STDOUT: ret ptr %1, !dbg !51 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.Optional.c661605f12aa337a.Core:OptionalAs.1dac4564233fecd1.Core.ba0bf13f1b5bc657"(ptr %self) #0 !dbg !52 { +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.Optional.c661605f12aa337a.Core:OptionalAs.1dac4564233fecd1.Core.cdbe4154b421df5e"(ptr %self) #0 !dbg !52 { // CHECK:STDOUT: %temp = alloca ptr, align 8, !dbg !55 // CHECK:STDOUT: %temp1 = alloca ptr, align 8, !dbg !55 -// CHECK:STDOUT: %1 = call i1 @_CHasValue.Optional.Core.0d555305d9583d05(ptr %self), !dbg !56 +// CHECK:STDOUT: %1 = call i1 @_CHasValue.Optional.Core.8a123cba93150295(ptr %self), !dbg !56 // CHECK:STDOUT: br i1 %1, label %2, label %7, !dbg !57 // CHECK:STDOUT: // CHECK:STDOUT: 2: ; preds = %0 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %temp), !dbg !55 -// CHECK:STDOUT: %3 = call ptr @_CGet.Optional.Core.0d555305d9583d05(ptr %self), !dbg !55 +// CHECK:STDOUT: %3 = call ptr @_CGet.Optional.Core.8a123cba93150295(ptr %self), !dbg !55 // CHECK:STDOUT: store ptr %3, ptr %temp, align 8, !dbg !55 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %temp1), !dbg !55 // CHECK:STDOUT: %4 = load ptr, ptr %temp, align 8, !dbg !55 // CHECK:STDOUT: store ptr %4, ptr %temp1, align 8, !dbg !55 // CHECK:STDOUT: %5 = load ptr, ptr %temp1, align 8, !dbg !55 -// CHECK:STDOUT: %6 = call ptr @_CSome.Optional.Core.deb37f08ddf50b30(ptr %5), !dbg !58 +// CHECK:STDOUT: %6 = call ptr @_CSome.Optional.Core.0a3165baf8bbb6d3(ptr %5), !dbg !58 // CHECK:STDOUT: ret ptr %6, !dbg !59 // CHECK:STDOUT: // CHECK:STDOUT: 7: ; preds = %0 -// CHECK:STDOUT: %8 = call ptr @_CNone.Optional.Core.deb37f08ddf50b30(), !dbg !60 +// CHECK:STDOUT: %8 = call ptr @_CNone.Optional.Core.0a3165baf8bbb6d3(), !dbg !60 // CHECK:STDOUT: ret ptr %8, !dbg !61 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.0d555305d9583d05(ptr %self) #0 !dbg !62 { +// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.8a123cba93150295(ptr %self) #0 !dbg !62 { // CHECK:STDOUT: %1 = call i1 @"_CHas.e8f8f92d3d08d149:OptionalStorage.Core.fc8b3e0dc71c345e"(ptr %self), !dbg !65 // CHECK:STDOUT: ret i1 %1, !dbg !66 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @_CGet.Optional.Core.0d555305d9583d05(ptr %self) #0 !dbg !67 { +// CHECK:STDOUT: define linkonce_odr ptr @_CGet.Optional.Core.8a123cba93150295(ptr %self) #0 !dbg !67 { // CHECK:STDOUT: %1 = call ptr @"_CGet.e8f8f92d3d08d149:OptionalStorage.Core.fc8b3e0dc71c345e"(ptr %self), !dbg !70 // CHECK:STDOUT: ret ptr %1, !dbg !71 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.deb37f08ddf50b30(ptr %value) #0 !dbg !72 { +// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.0a3165baf8bbb6d3(ptr %value) #0 !dbg !72 { // CHECK:STDOUT: %1 = call ptr @"_CSome.e8f8f92d3d08d149:OptionalStorage.Core.8753681fdb639539"(ptr %value), !dbg !75 // CHECK:STDOUT: ret ptr %1, !dbg !76 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @_CNone.Optional.Core.deb37f08ddf50b30() #0 !dbg !77 { +// CHECK:STDOUT: define linkonce_odr ptr @_CNone.Optional.Core.0a3165baf8bbb6d3() #0 !dbg !77 { // CHECK:STDOUT: ret ptr null, !dbg !80 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -616,7 +616,7 @@ fn Convert() { // CHECK:STDOUT: !25 = !{!26} // CHECK:STDOUT: !26 = !DILocalVariable(arg: 1, scope: !24, type: !20) // CHECK:STDOUT: !27 = !DILocation(line: 9, column: 12, scope: !24) -// CHECK:STDOUT: !28 = distinct !DISubprogram(name: "Op", linkageName: "_COp.4713799e8769f265:core.Destroy.Core", scope: null, file: !1, line: 9, type: !18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !29) +// CHECK:STDOUT: !28 = distinct !DISubprogram(name: "Op", linkageName: "_COp.5a309bcb12d98030:core.Destroy.Core", scope: null, file: !1, line: 9, type: !18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !29) // CHECK:STDOUT: !29 = !{!30} // CHECK:STDOUT: !30 = !DILocalVariable(arg: 1, scope: !28, type: !20) // CHECK:STDOUT: !31 = !DILocation(line: 9, column: 12, scope: !28) @@ -628,11 +628,11 @@ fn Convert() { // CHECK:STDOUT: !37 = !{!38} // CHECK:STDOUT: !38 = !DILocalVariable(arg: 1, scope: !36, type: !20) // CHECK:STDOUT: !39 = !DILocation(line: 9, column: 12, scope: !36) -// CHECK:STDOUT: !40 = distinct !DISubprogram(name: "Op", linkageName: "_COp.2b115399396a8344:core.Destroy.Core", scope: null, file: !1, line: 9, type: !18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !41) +// CHECK:STDOUT: !40 = distinct !DISubprogram(name: "Op", linkageName: "_COp.50147b96cc245a5c:core.Destroy.Core", scope: null, file: !1, line: 9, type: !18, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !41) // CHECK:STDOUT: !41 = !{!42} // CHECK:STDOUT: !42 = !DILocalVariable(arg: 1, scope: !40, type: !20) // CHECK:STDOUT: !43 = !DILocation(line: 9, column: 12, scope: !40) -// CHECK:STDOUT: !44 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.26284956f90c5004", scope: null, file: !45, line: 105, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !48) +// CHECK:STDOUT: !44 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.4ac926a9bb296667", scope: null, file: !45, line: 105, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !48) // CHECK:STDOUT: !45 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !46 = !DISubroutineType(types: !47) // CHECK:STDOUT: !47 = !{!20, !20} @@ -640,7 +640,7 @@ fn Convert() { // CHECK:STDOUT: !49 = !DILocalVariable(arg: 1, scope: !44, type: !20) // CHECK:STDOUT: !50 = !DILocation(line: 106, column: 12, scope: !44) // CHECK:STDOUT: !51 = !DILocation(line: 106, column: 5, scope: !44) -// CHECK:STDOUT: !52 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Optional.c661605f12aa337a.Core:OptionalAs.1dac4564233fecd1.Core.ba0bf13f1b5bc657", scope: null, file: !45, line: 95, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !53) +// CHECK:STDOUT: !52 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Optional.c661605f12aa337a.Core:OptionalAs.1dac4564233fecd1.Core.cdbe4154b421df5e", scope: null, file: !45, line: 95, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !53) // CHECK:STDOUT: !53 = !{!54} // CHECK:STDOUT: !54 = !DILocalVariable(arg: 1, scope: !52, type: !20) // CHECK:STDOUT: !55 = !DILocation(line: 97, column: 31, scope: !52) @@ -650,22 +650,22 @@ fn Convert() { // CHECK:STDOUT: !59 = !DILocation(line: 97, column: 7, scope: !52) // CHECK:STDOUT: !60 = !DILocation(line: 99, column: 12, scope: !52) // CHECK:STDOUT: !61 = !DILocation(line: 99, column: 5, scope: !52) -// CHECK:STDOUT: !62 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.0d555305d9583d05", scope: null, file: !45, line: 36, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !63) +// CHECK:STDOUT: !62 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.8a123cba93150295", scope: null, file: !45, line: 36, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !63) // CHECK:STDOUT: !63 = !{!64} // CHECK:STDOUT: !64 = !DILocalVariable(arg: 1, scope: !62, type: !20) // CHECK:STDOUT: !65 = !DILocation(line: 37, column: 12, scope: !62) // CHECK:STDOUT: !66 = !DILocation(line: 37, column: 5, scope: !62) -// CHECK:STDOUT: !67 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.0d555305d9583d05", scope: null, file: !45, line: 39, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !68) +// CHECK:STDOUT: !67 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.8a123cba93150295", scope: null, file: !45, line: 39, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !68) // CHECK:STDOUT: !68 = !{!69} // CHECK:STDOUT: !69 = !DILocalVariable(arg: 1, scope: !67, type: !20) // CHECK:STDOUT: !70 = !DILocation(line: 40, column: 12, scope: !67) // CHECK:STDOUT: !71 = !DILocation(line: 40, column: 5, scope: !67) -// CHECK:STDOUT: !72 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.deb37f08ddf50b30", scope: null, file: !45, line: 33, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !73) +// CHECK:STDOUT: !72 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.0a3165baf8bbb6d3", scope: null, file: !45, line: 33, type: !46, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !73) // CHECK:STDOUT: !73 = !{!74} // CHECK:STDOUT: !74 = !DILocalVariable(arg: 1, scope: !72, type: !20) // CHECK:STDOUT: !75 = !DILocation(line: 34, column: 12, scope: !72) // CHECK:STDOUT: !76 = !DILocation(line: 34, column: 5, scope: !72) -// CHECK:STDOUT: !77 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.deb37f08ddf50b30", scope: null, file: !45, line: 30, type: !78, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !77 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.0a3165baf8bbb6d3", scope: null, file: !45, line: 30, type: !78, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !78 = !DISubroutineType(types: !79) // CHECK:STDOUT: !79 = !{!20} // CHECK:STDOUT: !80 = !DILocation(line: 31, column: 5, scope: !77) diff --git a/toolchain/lower/testdata/interop/cpp/void.carbon b/toolchain/lower/testdata/interop/cpp/void.carbon index 6f7366cdb2bb..1a6949e18f30 100644 --- a/toolchain/lower/testdata/interop/cpp/void.carbon +++ b/toolchain/lower/testdata/interop/cpp/void.carbon @@ -66,12 +66,12 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: define void @_CPassVoidPtr.Main(ptr %a) #0 !dbg !11 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc7_21.2.temp = alloca ptr, align 8, !dbg !17 -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.52f71e11dc373f9a"(ptr %a), !dbg !17 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.c14c4b15997bee86"(ptr %a), !dbg !17 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc7_21.2.temp), !dbg !17 // CHECK:STDOUT: store ptr %U.as_type.as.ImplicitAs.impl.Convert.call, ptr %.loc7_21.2.temp, align 8, !dbg !17 // CHECK:STDOUT: %.loc7_21.4 = load ptr, ptr %.loc7_21.2.temp, align 8, !dbg !17 // CHECK:STDOUT: call void @_Z13take_void_ptrPv(ptr %.loc7_21.4), !dbg !18 -// CHECK:STDOUT: call void @"_COp.801be0c493a24c71:core.Destroy.Core"(ptr %.loc7_21.2.temp), !dbg !17 +// CHECK:STDOUT: call void @"_COp.f851aa344314c135:core.Destroy.Core"(ptr %.loc7_21.2.temp), !dbg !17 // CHECK:STDOUT: ret void, !dbg !19 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -90,7 +90,7 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.801be0c493a24c71:core.Destroy.Core"(ptr %self) #0 !dbg !28 { +// CHECK:STDOUT: define weak_odr void @"_COp.f851aa344314c135:core.Destroy.Core"(ptr %self) #0 !dbg !28 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !31 // CHECK:STDOUT: } @@ -99,12 +99,12 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: define void @_CPassIntPtr.Main(ptr %a) #0 !dbg !32 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc11_21.2.temp = alloca ptr, align 8, !dbg !35 -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.ed3bde3932287ced"(ptr %a), !dbg !35 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.8c5449d223152401"(ptr %a), !dbg !35 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc11_21.2.temp), !dbg !35 // CHECK:STDOUT: store ptr %U.as_type.as.ImplicitAs.impl.Convert.call, ptr %.loc11_21.2.temp, align 8, !dbg !35 // CHECK:STDOUT: %.loc11_21.4 = load ptr, ptr %.loc11_21.2.temp, align 8, !dbg !35 // CHECK:STDOUT: call void @_Z13take_void_ptrPv(ptr %.loc11_21.4), !dbg !36 -// CHECK:STDOUT: call void @"_COp.801be0c493a24c71:core.Destroy.Core"(ptr %.loc11_21.2.temp), !dbg !35 +// CHECK:STDOUT: call void @"_COp.f851aa344314c135:core.Destroy.Core"(ptr %.loc11_21.2.temp), !dbg !35 // CHECK:STDOUT: ret void, !dbg !37 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -112,12 +112,12 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: define void @_CPassIntPtrToConstVoidPtr.Main(ptr %a) #0 !dbg !38 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc15_27.2.temp = alloca ptr, align 8, !dbg !41 -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0dc2e35b064d71e9"(ptr %a), !dbg !41 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.829156f00ffa2f85"(ptr %a), !dbg !41 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc15_27.2.temp), !dbg !41 // CHECK:STDOUT: store ptr %U.as_type.as.ImplicitAs.impl.Convert.call, ptr %.loc15_27.2.temp, align 8, !dbg !41 // CHECK:STDOUT: %.loc15_27.4 = load ptr, ptr %.loc15_27.2.temp, align 8, !dbg !41 // CHECK:STDOUT: call void @_Z19take_const_void_ptrPKv(ptr %.loc15_27.4), !dbg !42 -// CHECK:STDOUT: call void @"_COp.d7b9c2d58a39f2df:core.Destroy.Core"(ptr %.loc15_27.2.temp), !dbg !41 +// CHECK:STDOUT: call void @"_COp.6755857d68a4faff:core.Destroy.Core"(ptr %.loc15_27.2.temp), !dbg !41 // CHECK:STDOUT: ret void, !dbg !43 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -136,7 +136,7 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.d7b9c2d58a39f2df:core.Destroy.Core"(ptr %self) #0 !dbg !52 { +// CHECK:STDOUT: define weak_odr void @"_COp.6755857d68a4faff:core.Destroy.Core"(ptr %self) #0 !dbg !52 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !55 // CHECK:STDOUT: } @@ -145,18 +145,18 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: define void @_CPassConstIntPtrToConstVoidPtr.Main(ptr %a) #0 !dbg !56 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc19_27.2.temp = alloca ptr, align 8, !dbg !59 -// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0dc2e35b064d71e9"(ptr %a), !dbg !59 +// CHECK:STDOUT: %U.as_type.as.ImplicitAs.impl.Convert.call = call ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.829156f00ffa2f85"(ptr %a), !dbg !59 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc19_27.2.temp), !dbg !59 // CHECK:STDOUT: store ptr %U.as_type.as.ImplicitAs.impl.Convert.call, ptr %.loc19_27.2.temp, align 8, !dbg !59 // CHECK:STDOUT: %.loc19_27.4 = load ptr, ptr %.loc19_27.2.temp, align 8, !dbg !59 // CHECK:STDOUT: call void @_Z19take_const_void_ptrPKv(ptr %.loc19_27.4), !dbg !60 -// CHECK:STDOUT: call void @"_COp.d7b9c2d58a39f2df:core.Destroy.Core"(ptr %.loc19_27.2.temp), !dbg !59 +// CHECK:STDOUT: call void @"_COp.6755857d68a4faff:core.Destroy.Core"(ptr %.loc19_27.2.temp), !dbg !59 // CHECK:STDOUT: ret void, !dbg !61 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.52f71e11dc373f9a"(ptr %self) #0 !dbg !62 { -// CHECK:STDOUT: %1 = call ptr @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.258ff42e9fd73c28"(ptr %self), !dbg !68 +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.c14c4b15997bee86"(ptr %self) #0 !dbg !62 { +// CHECK:STDOUT: %1 = call ptr @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.9ca4a8a75282568d"(ptr %self), !dbg !68 // CHECK:STDOUT: ret ptr %1, !dbg !69 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -164,46 +164,46 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #2 // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.ed3bde3932287ced"(ptr %self) #0 !dbg !70 { -// CHECK:STDOUT: %1 = call ptr @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.ff6ab29b5872c34c"(ptr %self), !dbg !73 +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.8c5449d223152401"(ptr %self) #0 !dbg !70 { +// CHECK:STDOUT: %1 = call ptr @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.92767fefc702cdf5"(ptr %self), !dbg !73 // CHECK:STDOUT: ret ptr %1, !dbg !74 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0dc2e35b064d71e9"(ptr %self) #0 !dbg !75 { -// CHECK:STDOUT: %1 = call ptr @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.e316e6328124c0b3"(ptr %self), !dbg !78 +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.829156f00ffa2f85"(ptr %self) #0 !dbg !75 { +// CHECK:STDOUT: %1 = call ptr @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.8f07a49808730bc0"(ptr %self), !dbg !78 // CHECK:STDOUT: ret ptr %1, !dbg !79 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.258ff42e9fd73c28"(ptr %self) #0 !dbg !80 { -// CHECK:STDOUT: %1 = call ptr @_CSome.Optional.Core.258ff42e9fd73c28(ptr %self), !dbg !83 +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.9ca4a8a75282568d"(ptr %self) #0 !dbg !80 { +// CHECK:STDOUT: %1 = call ptr @_CSome.Optional.Core.9ca4a8a75282568d(ptr %self), !dbg !83 // CHECK:STDOUT: ret ptr %1, !dbg !84 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.ff6ab29b5872c34c"(ptr %self) #0 !dbg !85 { +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.92767fefc702cdf5"(ptr %self) #0 !dbg !85 { // CHECK:STDOUT: %temp = alloca ptr, align 8, !dbg !88 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %temp), !dbg !88 // CHECK:STDOUT: store ptr %self, ptr %temp, align 8, !dbg !88 // CHECK:STDOUT: %1 = load ptr, ptr %temp, align 8, !dbg !88 -// CHECK:STDOUT: %2 = call ptr @_CSome.Optional.Core.258ff42e9fd73c28(ptr %1), !dbg !89 +// CHECK:STDOUT: %2 = call ptr @_CSome.Optional.Core.9ca4a8a75282568d(ptr %1), !dbg !89 // CHECK:STDOUT: ret ptr %2, !dbg !90 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.e316e6328124c0b3"(ptr %self) #0 !dbg !91 { +// CHECK:STDOUT: define linkonce_odr ptr @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.8f07a49808730bc0"(ptr %self) #0 !dbg !91 { // CHECK:STDOUT: %temp = alloca ptr, align 8, !dbg !94 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %temp), !dbg !94 // CHECK:STDOUT: %1 = call ptr @"_CConvert:thunk:ImplicitAs.d035546bf1a99743.Core:e8f8f92d3d08d149:ImplicitAs.01c4a560c986e7d1.Core.84588f41d61dafba"(ptr %self), !dbg !94 // CHECK:STDOUT: store ptr %1, ptr %temp, align 8, !dbg !94 // CHECK:STDOUT: %2 = load ptr, ptr %temp, align 8, !dbg !94 -// CHECK:STDOUT: %3 = call ptr @_CSome.Optional.Core.e5c5bc28e9d686cf(ptr %2), !dbg !95 +// CHECK:STDOUT: %3 = call ptr @_CSome.Optional.Core.8706aff08f648688(ptr %2), !dbg !95 // CHECK:STDOUT: ret ptr %3, !dbg !96 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.258ff42e9fd73c28(ptr %value) #0 !dbg !97 { +// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.9ca4a8a75282568d(ptr %value) #0 !dbg !97 { // CHECK:STDOUT: %1 = call ptr @"_CSome.e8f8f92d3d08d149:OptionalStorage.Core.7a595a06c724a271"(ptr %value), !dbg !100 // CHECK:STDOUT: ret ptr %1, !dbg !101 // CHECK:STDOUT: } @@ -214,7 +214,7 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.e5c5bc28e9d686cf(ptr %value) #0 !dbg !107 { +// CHECK:STDOUT: define linkonce_odr ptr @_CSome.Optional.Core.8706aff08f648688(ptr %value) #0 !dbg !107 { // CHECK:STDOUT: %1 = call ptr @"_CSome.e8f8f92d3d08d149:OptionalStorage.Core.8f1054b47505c137"(ptr %value), !dbg !110 // CHECK:STDOUT: ret ptr %1, !dbg !111 // CHECK:STDOUT: } @@ -243,8 +243,8 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: // CHECK:STDOUT: ; uselistorder directives // CHECK:STDOUT: uselistorder ptr @llvm.lifetime.start.p0, { 0, 1, 2, 3, 7, 6, 5, 4 } -// CHECK:STDOUT: uselistorder ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0dc2e35b064d71e9", { 1, 0 } -// CHECK:STDOUT: uselistorder ptr @_CSome.Optional.Core.258ff42e9fd73c28, { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.829156f00ffa2f85", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @_CSome.Optional.Core.9ca4a8a75282568d, { 1, 0 } // CHECK:STDOUT: // CHECK:STDOUT: attributes #0 = { nounwind } // CHECK:STDOUT: attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -283,7 +283,7 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: !25 = !{!26} // CHECK:STDOUT: !26 = !DILocalVariable(arg: 1, scope: !24, type: !14) // CHECK:STDOUT: !27 = !DILocation(line: 7, column: 21, scope: !24) -// CHECK:STDOUT: !28 = distinct !DISubprogram(name: "Op", linkageName: "_COp.801be0c493a24c71:core.Destroy.Core", scope: null, file: !1, line: 7, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !29) +// CHECK:STDOUT: !28 = distinct !DISubprogram(name: "Op", linkageName: "_COp.f851aa344314c135:core.Destroy.Core", scope: null, file: !1, line: 7, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !29) // CHECK:STDOUT: !29 = !{!30} // CHECK:STDOUT: !30 = !DILocalVariable(arg: 1, scope: !28, type: !14) // CHECK:STDOUT: !31 = !DILocation(line: 7, column: 21, scope: !28) @@ -307,7 +307,7 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: !49 = !{!50} // CHECK:STDOUT: !50 = !DILocalVariable(arg: 1, scope: !48, type: !14) // CHECK:STDOUT: !51 = !DILocation(line: 15, column: 27, scope: !48) -// CHECK:STDOUT: !52 = distinct !DISubprogram(name: "Op", linkageName: "_COp.d7b9c2d58a39f2df:core.Destroy.Core", scope: null, file: !1, line: 15, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !53) +// CHECK:STDOUT: !52 = distinct !DISubprogram(name: "Op", linkageName: "_COp.6755857d68a4faff:core.Destroy.Core", scope: null, file: !1, line: 15, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !53) // CHECK:STDOUT: !53 = !{!54} // CHECK:STDOUT: !54 = !DILocalVariable(arg: 1, scope: !52, type: !14) // CHECK:STDOUT: !55 = !DILocation(line: 15, column: 27, scope: !52) @@ -317,7 +317,7 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: !59 = !DILocation(line: 19, column: 27, scope: !56) // CHECK:STDOUT: !60 = !DILocation(line: 19, column: 3, scope: !56) // CHECK:STDOUT: !61 = !DILocation(line: 18, column: 1, scope: !56) -// CHECK:STDOUT: !62 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.52f71e11dc373f9a", scope: null, file: !63, line: 105, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !66) +// CHECK:STDOUT: !62 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.c14c4b15997bee86", scope: null, file: !63, line: 105, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !66) // CHECK:STDOUT: !63 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !64 = !DISubroutineType(types: !65) // CHECK:STDOUT: !65 = !{!14, !14} @@ -325,34 +325,34 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: !67 = !DILocalVariable(arg: 1, scope: !62, type: !14) // CHECK:STDOUT: !68 = !DILocation(line: 106, column: 12, scope: !62) // CHECK:STDOUT: !69 = !DILocation(line: 106, column: 5, scope: !62) -// CHECK:STDOUT: !70 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.ed3bde3932287ced", scope: null, file: !63, line: 105, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !71) +// CHECK:STDOUT: !70 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.8c5449d223152401", scope: null, file: !63, line: 105, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !71) // CHECK:STDOUT: !71 = !{!72} // CHECK:STDOUT: !72 = !DILocalVariable(arg: 1, scope: !70, type: !14) // CHECK:STDOUT: !73 = !DILocation(line: 106, column: 12, scope: !70) // CHECK:STDOUT: !74 = !DILocation(line: 106, column: 5, scope: !70) -// CHECK:STDOUT: !75 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.0dc2e35b064d71e9", scope: null, file: !63, line: 105, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !76) +// CHECK:STDOUT: !75 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.829156f00ffa2f85", scope: null, file: !63, line: 105, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !76) // CHECK:STDOUT: !76 = !{!77} // CHECK:STDOUT: !77 = !DILocalVariable(arg: 1, scope: !75, type: !14) // CHECK:STDOUT: !78 = !DILocation(line: 106, column: 12, scope: !75) // CHECK:STDOUT: !79 = !DILocation(line: 106, column: 5, scope: !75) -// CHECK:STDOUT: !80 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.258ff42e9fd73c28", scope: null, file: !63, line: 80, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !81) +// CHECK:STDOUT: !80 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.9ca4a8a75282568d", scope: null, file: !63, line: 80, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !81) // CHECK:STDOUT: !81 = !{!82} // CHECK:STDOUT: !82 = !DILocalVariable(arg: 1, scope: !80, type: !14) // CHECK:STDOUT: !83 = !DILocation(line: 81, column: 12, scope: !80) // CHECK:STDOUT: !84 = !DILocation(line: 81, column: 5, scope: !80) -// CHECK:STDOUT: !85 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.ff6ab29b5872c34c", scope: null, file: !63, line: 87, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !86) +// CHECK:STDOUT: !85 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.92767fefc702cdf5", scope: null, file: !63, line: 87, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !86) // CHECK:STDOUT: !86 = !{!87} // CHECK:STDOUT: !87 = !DILocalVariable(arg: 1, scope: !85, type: !14) // CHECK:STDOUT: !88 = !DILocation(line: 88, column: 29, scope: !85) // CHECK:STDOUT: !89 = !DILocation(line: 88, column: 12, scope: !85) // CHECK:STDOUT: !90 = !DILocation(line: 88, column: 5, scope: !85) -// CHECK:STDOUT: !91 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.e316e6328124c0b3", scope: null, file: !63, line: 87, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !92) +// CHECK:STDOUT: !91 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.8f07a49808730bc0", scope: null, file: !63, line: 87, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !92) // CHECK:STDOUT: !92 = !{!93} // CHECK:STDOUT: !93 = !DILocalVariable(arg: 1, scope: !91, type: !14) // CHECK:STDOUT: !94 = !DILocation(line: 88, column: 29, scope: !91) // CHECK:STDOUT: !95 = !DILocation(line: 88, column: 12, scope: !91) // CHECK:STDOUT: !96 = !DILocation(line: 88, column: 5, scope: !91) -// CHECK:STDOUT: !97 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.258ff42e9fd73c28", scope: null, file: !63, line: 33, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !98) +// CHECK:STDOUT: !97 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.9ca4a8a75282568d", scope: null, file: !63, line: 33, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !98) // CHECK:STDOUT: !98 = !{!99} // CHECK:STDOUT: !99 = !DILocalVariable(arg: 1, scope: !97, type: !14) // CHECK:STDOUT: !100 = !DILocation(line: 34, column: 12, scope: !97) @@ -362,7 +362,7 @@ fn ConvertFromConstVoidPtr(p: const Cpp.void*) -> const i32* { // CHECK:STDOUT: !104 = !{!105} // CHECK:STDOUT: !105 = !DILocalVariable(arg: 1, scope: !102, type: !14) // CHECK:STDOUT: !106 = !DILocation(line: 40, column: 3, scope: !102) -// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.e5c5bc28e9d686cf", scope: null, file: !63, line: 33, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !108) +// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.8706aff08f648688", scope: null, file: !63, line: 33, type: !64, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !108) // CHECK:STDOUT: !108 = !{!109} // CHECK:STDOUT: !109 = !DILocalVariable(arg: 1, scope: !107, type: !14) // CHECK:STDOUT: !110 = !DILocation(line: 34, column: 12, scope: !107) diff --git a/toolchain/lower/testdata/operators/increment.carbon b/toolchain/lower/testdata/operators/increment.carbon index 68366407ad13..7de1f15b5436 100644 --- a/toolchain/lower/testdata/operators/increment.carbon +++ b/toolchain/lower/testdata/operators/increment.carbon @@ -45,13 +45,13 @@ fn IncrSigned() { // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr void @"_COp.Int.9452f4c51951679b.Core:Inc.Core.be1e879c1ad406d8"(ptr %self) #0 !dbg !17 { -// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 1), !dbg !21 +// CHECK:STDOUT: call void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 1), !dbg !21 // CHECK:STDOUT: ret void, !dbg !22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: alwaysinline nounwind -// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661"(ptr %self, i32 %other) #2 !dbg !23 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %other), !dbg !29 +// CHECK:STDOUT: define linkonce_odr void @"_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064"(ptr %self, i32 %other) #2 !dbg !23 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %other), !dbg !29 // CHECK:STDOUT: %2 = load i32, ptr %self, align 4, !dbg !30 // CHECK:STDOUT: %3 = add i32 %2, %1, !dbg !30 // CHECK:STDOUT: store i32 %3, ptr %self, align 4, !dbg !30 @@ -59,7 +59,7 @@ fn IncrSigned() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %self) #0 !dbg !31 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %self) #0 !dbg !31 { // CHECK:STDOUT: %1 = call i32 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.be1e879c1ad406d8"(i32 %self), !dbg !36 // CHECK:STDOUT: ret i32 %1, !dbg !37 // CHECK:STDOUT: } @@ -99,7 +99,7 @@ fn IncrSigned() { // CHECK:STDOUT: !20 = !DILocalVariable(arg: 1, scope: !17, type: !13) // CHECK:STDOUT: !21 = !DILocation(line: 398, column: 5, scope: !17) // CHECK:STDOUT: !22 = !DILocation(line: 396, column: 3, scope: !17) -// CHECK:STDOUT: !23 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.44914b6ff6901661", scope: null, file: !18, line: 331, type: !24, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !26) +// CHECK:STDOUT: !23 = distinct !DISubprogram(name: "Op", linkageName: "_COp:thunk:AddAssignWith.6f9e8c1abf8bb3ea.Core:Int.9452f4c51951679b.Core:AddAssignWith.bcc2a64c00f3554f.Core.224cb1ed5cb3f064", scope: null, file: !18, line: 331, type: !24, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !26) // CHECK:STDOUT: !24 = !DISubroutineType(types: !25) // CHECK:STDOUT: !25 = !{null, !13, !13} // CHECK:STDOUT: !26 = !{!27, !28} @@ -107,7 +107,7 @@ fn IncrSigned() { // CHECK:STDOUT: !28 = !DILocalVariable(arg: 2, scope: !23, type: !13) // CHECK:STDOUT: !29 = !DILocation(line: 0, scope: !23) // CHECK:STDOUT: !30 = !DILocation(line: 331, column: 3, scope: !23) -// CHECK:STDOUT: !31 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47", scope: null, file: !18, line: 64, type: !32, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !34) +// CHECK:STDOUT: !31 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659", scope: null, file: !18, line: 64, type: !32, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !34) // CHECK:STDOUT: !32 = !DISubroutineType(types: !33) // CHECK:STDOUT: !33 = !{!13, !13} // CHECK:STDOUT: !34 = !{!35} diff --git a/toolchain/lower/testdata/primitives/char.carbon b/toolchain/lower/testdata/primitives/char.carbon index 98c3002ed25e..f532d36d5f98 100644 --- a/toolchain/lower/testdata/primitives/char.carbon +++ b/toolchain/lower/testdata/primitives/char.carbon @@ -118,13 +118,13 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: define void @_CConvert.Main(i8 %c, i8 %u) #0 !dbg !12 { // CHECK:STDOUT: entry: // CHECK:STDOUT: call void @_CDiscard.Main.15688e19507865c6(i8 %c), !dbg !18 -// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc23 = call i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.dbe0a954f4d47a23"(i8 %c), !dbg !19 +// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc23 = call i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.71e964fa0c7fb41c"(i8 %c), !dbg !19 // CHECK:STDOUT: call void @_CDiscard.Main.147e0bd019a31663(i16 %char.as.As.impl.Convert.call.loc23), !dbg !20 -// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc24 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.691b43fb97812586"(i8 %c), !dbg !21 +// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc24 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.fb87f0040cad1a2a"(i8 %c), !dbg !21 // CHECK:STDOUT: call void @_CDiscard.Main.eadca4a969cf6f21(i32 %char.as.As.impl.Convert.call.loc24), !dbg !22 -// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc26 = call i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.48e83ee0f3ef2ee8"(i8 %c), !dbg !23 +// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc26 = call i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.9e64220e66143f5f"(i8 %c), !dbg !23 // CHECK:STDOUT: call void @_CDiscard.Main.147e0bd019a31663(i16 %char.as.As.impl.Convert.call.loc26), !dbg !24 -// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc27 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.8da8ddbe24cfd39a"(i8 %c), !dbg !25 +// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc27 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.6eda9b086d425708"(i8 %c), !dbg !25 // CHECK:STDOUT: call void @_CDiscard.Main.eadca4a969cf6f21(i32 %char.as.As.impl.Convert.call.loc27), !dbg !26 // CHECK:STDOUT: call void @_CDiscard.Main.15688e19507865c6(i8 %u), !dbg !27 // CHECK:STDOUT: ret void, !dbg !28 @@ -134,13 +134,13 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: define void @_CConvertConstant.Main() #0 !dbg !29 { // CHECK:STDOUT: entry: // CHECK:STDOUT: call void @_CDiscard.Main.15688e19507865c6(i8 120), !dbg !32 -// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc33 = call i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.dbe0a954f4d47a23"(i8 120), !dbg !33 +// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc33 = call i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.71e964fa0c7fb41c"(i8 120), !dbg !33 // CHECK:STDOUT: call void @_CDiscard.Main.147e0bd019a31663(i16 %char.as.As.impl.Convert.call.loc33), !dbg !34 -// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc34 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.691b43fb97812586"(i8 120), !dbg !35 +// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc34 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.fb87f0040cad1a2a"(i8 120), !dbg !35 // CHECK:STDOUT: call void @_CDiscard.Main.eadca4a969cf6f21(i32 %char.as.As.impl.Convert.call.loc34), !dbg !36 -// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc35 = call i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.48e83ee0f3ef2ee8"(i8 120), !dbg !37 +// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc35 = call i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.9e64220e66143f5f"(i8 120), !dbg !37 // CHECK:STDOUT: call void @_CDiscard.Main.147e0bd019a31663(i16 %char.as.As.impl.Convert.call.loc35), !dbg !38 -// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc36 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.8da8ddbe24cfd39a"(i8 120), !dbg !39 +// CHECK:STDOUT: %char.as.As.impl.Convert.call.loc36 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.6eda9b086d425708"(i8 120), !dbg !39 // CHECK:STDOUT: call void @_CDiscard.Main.eadca4a969cf6f21(i32 %char.as.As.impl.Convert.call.loc36), !dbg !40 // CHECK:STDOUT: call void @_CDiscard.Main.15688e19507865c6(i8 123), !dbg !41 // CHECK:STDOUT: ret void, !dbg !42 @@ -301,8 +301,8 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.dbe0a954f4d47a23"(i8 %self) #0 !dbg !196 { -// CHECK:STDOUT: %1 = call i16 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b906c5940adce8f0"(i8 %self), !dbg !202 +// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.71e964fa0c7fb41c"(i8 %self) #0 !dbg !196 { +// CHECK:STDOUT: %1 = call i16 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5498e38261144efa"(i8 %self), !dbg !202 // CHECK:STDOUT: ret i16 %1, !dbg !202 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -313,8 +313,8 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.691b43fb97812586"(i8 %self) #0 !dbg !209 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dbd6eca082a732b7"(i8 %self), !dbg !214 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.fb87f0040cad1a2a"(i8 %self) #0 !dbg !209 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5a7b232341cee023"(i8 %self), !dbg !214 // CHECK:STDOUT: ret i32 %1, !dbg !214 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -325,14 +325,14 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.48e83ee0f3ef2ee8"(i8 %self) #0 !dbg !221 { -// CHECK:STDOUT: %1 = call i16 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dc14f658d346b3e8"(i8 %self), !dbg !226 +// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.9e64220e66143f5f"(i8 %self) #0 !dbg !221 { +// CHECK:STDOUT: %1 = call i16 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.bf603d9e069af21a"(i8 %self), !dbg !226 // CHECK:STDOUT: ret i16 %1, !dbg !226 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.8da8ddbe24cfd39a"(i8 %self) #0 !dbg !227 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9"(i8 %self), !dbg !232 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.6eda9b086d425708"(i8 %self) #0 !dbg !227 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65"(i8 %self), !dbg !232 // CHECK:STDOUT: ret i32 %1, !dbg !232 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -344,16 +344,16 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr i32 @"_COp.Char.Core:SubWith.7c3e388e0087434a.Core.ab8531ca840d1501"(i8 %self, i8 %other) #0 !dbg !239 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %self), !dbg !245 -// CHECK:STDOUT: %2 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %other), !dbg !246 +// CHECK:STDOUT: %1 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %self), !dbg !245 +// CHECK:STDOUT: %2 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %other), !dbg !246 // CHECK:STDOUT: %3 = sub i32 %1, %2, !dbg !247 // CHECK:STDOUT: ret i32 %3, !dbg !248 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr i32 @"_COp.b27934686504f96c:SubWith.295cf9b677564c5c.Core.ab8531ca840d1501"(i8 %self, i8 %other) #0 !dbg !249 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %self), !dbg !253 -// CHECK:STDOUT: %2 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %other), !dbg !254 +// CHECK:STDOUT: %1 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %self), !dbg !253 +// CHECK:STDOUT: %2 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %other), !dbg !254 // CHECK:STDOUT: %3 = sub i32 %1, %2, !dbg !255 // CHECK:STDOUT: ret i32 %3, !dbg !256 // CHECK:STDOUT: } @@ -479,58 +479,58 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b906c5940adce8f0"(i8 %self) #0 !dbg !399 { -// CHECK:STDOUT: %1 = call i16 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.c3acaf94968d88d2"(i8 %self), !dbg !403 +// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5498e38261144efa"(i8 %self) #0 !dbg !399 { +// CHECK:STDOUT: %1 = call i16 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.0a1e58e5b2b3aeed"(i8 %self), !dbg !403 // CHECK:STDOUT: ret i16 %1, !dbg !404 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dbd6eca082a732b7"(i8 %self) #0 !dbg !405 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d93106ca8c7912cd"(i8 %self), !dbg !408 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5a7b232341cee023"(i8 %self) #0 !dbg !405 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.7d2e9190ee7a1b3d"(i8 %self), !dbg !408 // CHECK:STDOUT: ret i32 %1, !dbg !409 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dc14f658d346b3e8"(i8 %self) #0 !dbg !410 { -// CHECK:STDOUT: %1 = call i16 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.8d84eea89906cfec"(i8 %self), !dbg !413 +// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.bf603d9e069af21a"(i8 %self) #0 !dbg !410 { +// CHECK:STDOUT: %1 = call i16 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.c9597cfa21df4026"(i8 %self), !dbg !413 // CHECK:STDOUT: ret i16 %1, !dbg !414 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9"(i8 %self) #0 !dbg !415 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee"(i8 %self), !dbg !418 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65"(i8 %self) #0 !dbg !415 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56"(i8 %self), !dbg !418 // CHECK:STDOUT: ret i32 %1, !dbg !419 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %self) #0 !dbg !420 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9"(i8 %self), !dbg !423 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %self) #0 !dbg !420 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65"(i8 %self), !dbg !423 // CHECK:STDOUT: ret i32 %1, !dbg !423 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.c3acaf94968d88d2"(i8 %from) #0 !dbg !424 { +// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.0a1e58e5b2b3aeed"(i8 %from) #0 !dbg !424 { // CHECK:STDOUT: %1 = call i8 @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.ca1ac10d3fc7c1a8"(i8 %from), !dbg !427 // CHECK:STDOUT: %2 = zext i8 %1 to i16, !dbg !428 // CHECK:STDOUT: ret i16 %2, !dbg !429 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d93106ca8c7912cd"(i8 %from) #0 !dbg !430 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.7d2e9190ee7a1b3d"(i8 %from) #0 !dbg !430 { // CHECK:STDOUT: %1 = call i8 @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.ca1ac10d3fc7c1a8"(i8 %from), !dbg !433 // CHECK:STDOUT: %2 = zext i8 %1 to i32, !dbg !434 // CHECK:STDOUT: ret i32 %2, !dbg !435 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.8d84eea89906cfec"(i8 %from) #0 !dbg !436 { +// CHECK:STDOUT: define linkonce_odr i16 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.c9597cfa21df4026"(i8 %from) #0 !dbg !436 { // CHECK:STDOUT: %1 = call i8 @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.ca1ac10d3fc7c1a8"(i8 %from), !dbg !439 // CHECK:STDOUT: %2 = zext i8 %1 to i16, !dbg !440 // CHECK:STDOUT: ret i16 %2, !dbg !441 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee"(i8 %from) #0 !dbg !442 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56"(i8 %from) #0 !dbg !442 { // CHECK:STDOUT: %1 = call i8 @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.ca1ac10d3fc7c1a8"(i8 %from), !dbg !445 // CHECK:STDOUT: %2 = zext i8 %1 to i32, !dbg !446 // CHECK:STDOUT: ret i32 %2, !dbg !447 @@ -543,14 +543,14 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: // CHECK:STDOUT: ; uselistorder directives // CHECK:STDOUT: uselistorder ptr @_CDiscard.Main.15688e19507865c6, { 21, 0, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 } -// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.dbe0a954f4d47a23", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.71e964fa0c7fb41c", { 1, 0 } // CHECK:STDOUT: uselistorder ptr @_CDiscard.Main.147e0bd019a31663, { 3, 0, 2, 1 } -// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.691b43fb97812586", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.fb87f0040cad1a2a", { 1, 0 } // CHECK:STDOUT: uselistorder ptr @_CDiscard.Main.eadca4a969cf6f21, { 6, 0, 5, 1, 2, 3, 4 } -// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.48e83ee0f3ef2ee8", { 1, 0 } -// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.8da8ddbe24cfd39a", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.9e64220e66143f5f", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.6eda9b086d425708", { 1, 0 } // CHECK:STDOUT: uselistorder ptr @_CDiscard.Main.a4c7fafe8a72cac4, { 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 } -// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee", { 3, 2, 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5", { 3, 2, 1, 0 } // CHECK:STDOUT: uselistorder ptr @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.ca1ac10d3fc7c1a8", { 3, 2, 1, 0 } // CHECK:STDOUT: // CHECK:STDOUT: attributes #0 = { nounwind } @@ -754,7 +754,7 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: !193 = !{!194} // CHECK:STDOUT: !194 = !DILocalVariable(arg: 1, scope: !190, type: !7) // CHECK:STDOUT: !195 = !DILocation(line: 19, column: 1, scope: !190) -// CHECK:STDOUT: !196 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.dbe0a954f4d47a23", scope: null, file: !197, line: 42, type: !198, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !200) +// CHECK:STDOUT: !196 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.71e964fa0c7fb41c", scope: null, file: !197, line: 42, type: !198, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !200) // CHECK:STDOUT: !197 = !DIFile(filename: "{{.*}}/prelude/types/char.carbon", directory: "") // CHECK:STDOUT: !198 = !DISubroutineType(types: !199) // CHECK:STDOUT: !199 = !{!165, !7} @@ -767,7 +767,7 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: !206 = !{!207} // CHECK:STDOUT: !207 = !DILocalVariable(arg: 1, scope: !203, type: !165) // CHECK:STDOUT: !208 = !DILocation(line: 19, column: 1, scope: !203) -// CHECK:STDOUT: !209 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.691b43fb97812586", scope: null, file: !197, line: 42, type: !210, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !212) +// CHECK:STDOUT: !209 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.fb87f0040cad1a2a", scope: null, file: !197, line: 42, type: !210, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !212) // CHECK:STDOUT: !210 = !DISubroutineType(types: !211) // CHECK:STDOUT: !211 = !{!179, !7} // CHECK:STDOUT: !212 = !{!213} @@ -779,13 +779,13 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: !218 = !{!219} // CHECK:STDOUT: !219 = !DILocalVariable(arg: 1, scope: !215, type: !179) // CHECK:STDOUT: !220 = !DILocation(line: 19, column: 1, scope: !215) -// CHECK:STDOUT: !221 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.48e83ee0f3ef2ee8", scope: null, file: !197, line: 42, type: !222, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !224) +// CHECK:STDOUT: !221 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.9e64220e66143f5f", scope: null, file: !197, line: 42, type: !222, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !224) // CHECK:STDOUT: !222 = !DISubroutineType(types: !223) // CHECK:STDOUT: !223 = !{!126, !7} // CHECK:STDOUT: !224 = !{!225} // CHECK:STDOUT: !225 = !DILocalVariable(arg: 1, scope: !221, type: !7) // CHECK:STDOUT: !226 = !DILocation(line: 43, column: 5, scope: !221) -// CHECK:STDOUT: !227 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.8da8ddbe24cfd39a", scope: null, file: !197, line: 42, type: !228, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !230) +// CHECK:STDOUT: !227 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.6eda9b086d425708", scope: null, file: !197, line: 42, type: !228, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !230) // CHECK:STDOUT: !228 = !DISubroutineType(types: !229) // CHECK:STDOUT: !229 = !{!140, !7} // CHECK:STDOUT: !230 = !{!231} @@ -957,50 +957,50 @@ fn AddSubUInt32(c: char, i: u32) { // CHECK:STDOUT: !396 = !DILocation(line: 112, column: 29, scope: !392) // CHECK:STDOUT: !397 = !DILocation(line: 112, column: 13, scope: !392) // CHECK:STDOUT: !398 = !DILocation(line: 112, column: 5, scope: !392) -// CHECK:STDOUT: !399 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b906c5940adce8f0", scope: null, file: !400, line: 88, type: !198, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !401) +// CHECK:STDOUT: !399 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5498e38261144efa", scope: null, file: !400, line: 88, type: !198, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !401) // CHECK:STDOUT: !400 = !DIFile(filename: "{{.*}}/prelude/types/uint.carbon", directory: "") // CHECK:STDOUT: !401 = !{!402} // CHECK:STDOUT: !402 = !DILocalVariable(arg: 1, scope: !399, type: !7) // CHECK:STDOUT: !403 = !DILocation(line: 89, column: 12, scope: !399) // CHECK:STDOUT: !404 = !DILocation(line: 89, column: 5, scope: !399) -// CHECK:STDOUT: !405 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dbd6eca082a732b7", scope: null, file: !400, line: 88, type: !210, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !406) +// CHECK:STDOUT: !405 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5a7b232341cee023", scope: null, file: !400, line: 88, type: !210, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !406) // CHECK:STDOUT: !406 = !{!407} // CHECK:STDOUT: !407 = !DILocalVariable(arg: 1, scope: !405, type: !7) // CHECK:STDOUT: !408 = !DILocation(line: 89, column: 12, scope: !405) // CHECK:STDOUT: !409 = !DILocation(line: 89, column: 5, scope: !405) -// CHECK:STDOUT: !410 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dc14f658d346b3e8", scope: null, file: !400, line: 88, type: !222, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !411) +// CHECK:STDOUT: !410 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.bf603d9e069af21a", scope: null, file: !400, line: 88, type: !222, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !411) // CHECK:STDOUT: !411 = !{!412} // CHECK:STDOUT: !412 = !DILocalVariable(arg: 1, scope: !410, type: !7) // CHECK:STDOUT: !413 = !DILocation(line: 89, column: 12, scope: !410) // CHECK:STDOUT: !414 = !DILocation(line: 89, column: 5, scope: !410) -// CHECK:STDOUT: !415 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9", scope: null, file: !400, line: 88, type: !228, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !416) +// CHECK:STDOUT: !415 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65", scope: null, file: !400, line: 88, type: !228, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !416) // CHECK:STDOUT: !416 = !{!417} // CHECK:STDOUT: !417 = !DILocalVariable(arg: 1, scope: !415, type: !7) // CHECK:STDOUT: !418 = !DILocation(line: 89, column: 12, scope: !415) // CHECK:STDOUT: !419 = !DILocation(line: 89, column: 5, scope: !415) -// CHECK:STDOUT: !420 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee", scope: null, file: !197, line: 42, type: !228, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !421) +// CHECK:STDOUT: !420 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5", scope: null, file: !197, line: 42, type: !228, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !421) // CHECK:STDOUT: !421 = !{!422} // CHECK:STDOUT: !422 = !DILocalVariable(arg: 1, scope: !420, type: !7) // CHECK:STDOUT: !423 = !DILocation(line: 43, column: 5, scope: !420) -// CHECK:STDOUT: !424 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.c3acaf94968d88d2", scope: null, file: !400, line: 72, type: !198, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !425) +// CHECK:STDOUT: !424 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.0a1e58e5b2b3aeed", scope: null, file: !400, line: 72, type: !198, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !425) // CHECK:STDOUT: !425 = !{!426} // CHECK:STDOUT: !426 = !DILocalVariable(arg: 1, scope: !424, type: !7) // CHECK:STDOUT: !427 = !DILocation(line: 74, column: 17, scope: !424) // CHECK:STDOUT: !428 = !DILocation(line: 74, column: 12, scope: !424) // CHECK:STDOUT: !429 = !DILocation(line: 74, column: 5, scope: !424) -// CHECK:STDOUT: !430 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d93106ca8c7912cd", scope: null, file: !400, line: 72, type: !210, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !431) +// CHECK:STDOUT: !430 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.7d2e9190ee7a1b3d", scope: null, file: !400, line: 72, type: !210, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !431) // CHECK:STDOUT: !431 = !{!432} // CHECK:STDOUT: !432 = !DILocalVariable(arg: 1, scope: !430, type: !7) // CHECK:STDOUT: !433 = !DILocation(line: 74, column: 17, scope: !430) // CHECK:STDOUT: !434 = !DILocation(line: 74, column: 12, scope: !430) // CHECK:STDOUT: !435 = !DILocation(line: 74, column: 5, scope: !430) -// CHECK:STDOUT: !436 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.8d84eea89906cfec", scope: null, file: !400, line: 80, type: !222, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !437) +// CHECK:STDOUT: !436 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.c9597cfa21df4026", scope: null, file: !400, line: 80, type: !222, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !437) // CHECK:STDOUT: !437 = !{!438} // CHECK:STDOUT: !438 = !DILocalVariable(arg: 1, scope: !436, type: !7) // CHECK:STDOUT: !439 = !DILocation(line: 82, column: 17, scope: !436) // CHECK:STDOUT: !440 = !DILocation(line: 82, column: 12, scope: !436) // CHECK:STDOUT: !441 = !DILocation(line: 82, column: 5, scope: !436) -// CHECK:STDOUT: !442 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee", scope: null, file: !400, line: 80, type: !228, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !443) +// CHECK:STDOUT: !442 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56", scope: null, file: !400, line: 80, type: !228, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !443) // CHECK:STDOUT: !443 = !{!444} // CHECK:STDOUT: !444 = !DILocalVariable(arg: 1, scope: !442, type: !7) // CHECK:STDOUT: !445 = !DILocation(line: 82, column: 17, scope: !442) diff --git a/toolchain/lower/testdata/primitives/char_literals.carbon b/toolchain/lower/testdata/primitives/char_literals.carbon index b4d5c046fea1..4e4bb7307fb2 100644 --- a/toolchain/lower/testdata/primitives/char_literals.carbon +++ b/toolchain/lower/testdata/primitives/char_literals.carbon @@ -201,16 +201,16 @@ fn AddSubInt8() { // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr i32 @"_COp.Char.Core:SubWith.7c3e388e0087434a.Core.f0dfac78fde8177c"(i8 %self, i8 %other) #0 !dbg !106 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %self), !dbg !114 -// CHECK:STDOUT: %2 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %other), !dbg !115 +// CHECK:STDOUT: %1 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %self), !dbg !114 +// CHECK:STDOUT: %2 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %other), !dbg !115 // CHECK:STDOUT: %3 = sub i32 %1, %2, !dbg !116 // CHECK:STDOUT: ret i32 %3, !dbg !117 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define linkonce_odr i32 @"_COp.b27934686504f96c:SubWith.295cf9b677564c5c.Core.f0dfac78fde8177c"(i8 %self, i8 %other) #0 !dbg !118 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %self), !dbg !122 -// CHECK:STDOUT: %2 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %other), !dbg !123 +// CHECK:STDOUT: %1 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %self), !dbg !122 +// CHECK:STDOUT: %2 = call i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %other), !dbg !123 // CHECK:STDOUT: %3 = sub i32 %1, %2, !dbg !124 // CHECK:STDOUT: ret i32 %3, !dbg !125 // CHECK:STDOUT: } @@ -218,19 +218,19 @@ fn AddSubInt8() { // CHECK:STDOUT: declare i32 @"_COp.Char.Core:SubWith.295cf9b677564c5c.Core"(i8, i8) // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee"(i8 %self) #0 !dbg !126 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9"(i8 %self), !dbg !131 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5"(i8 %self) #0 !dbg !126 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65"(i8 %self), !dbg !131 // CHECK:STDOUT: ret i32 %1, !dbg !131 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9"(i8 %self) #0 !dbg !132 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee"(i8 %self), !dbg !136 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65"(i8 %self) #0 !dbg !132 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56"(i8 %self), !dbg !136 // CHECK:STDOUT: ret i32 %1, !dbg !137 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee"(i8 %from) #0 !dbg !138 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56"(i8 %from) #0 !dbg !138 { // CHECK:STDOUT: %1 = call i8 @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.ca1ac10d3fc7c1a8"(i8 %from), !dbg !141 // CHECK:STDOUT: %2 = zext i8 %1 to i32, !dbg !142 // CHECK:STDOUT: ret i32 %2, !dbg !143 @@ -247,7 +247,7 @@ fn AddSubInt8() { // CHECK:STDOUT: uselistorder ptr @_CDiscard.Main.eadca4a969cf6f21, { 5, 0, 4, 1, 2, 3 } // CHECK:STDOUT: uselistorder ptr @_CDiscard.Main.a4c7fafe8a72cac4, { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 } // CHECK:STDOUT: uselistorder ptr @_CDiscard.Main.084a2801e0f5d754, { 6, 0, 1, 2, 3, 4, 5 } -// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee", { 3, 2, 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5", { 3, 2, 1, 0 } // CHECK:STDOUT: // CHECK:STDOUT: attributes #0 = { nounwind } // CHECK:STDOUT: @@ -380,19 +380,19 @@ fn AddSubInt8() { // CHECK:STDOUT: !123 = !DILocation(line: 124, column: 29, scope: !118) // CHECK:STDOUT: !124 = !DILocation(line: 124, column: 12, scope: !118) // CHECK:STDOUT: !125 = !DILocation(line: 124, column: 5, scope: !118) -// CHECK:STDOUT: !126 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.db6d5218df1134ee", scope: null, file: !107, line: 42, type: !127, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !129) +// CHECK:STDOUT: !126 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Char.Core:As.5d7343568c0b5715.Core.ba30e308153a24c5", scope: null, file: !107, line: 42, type: !127, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !129) // CHECK:STDOUT: !127 = !DISubroutineType(types: !128) // CHECK:STDOUT: !128 = !{!110, !7} // CHECK:STDOUT: !129 = !{!130} // CHECK:STDOUT: !130 = !DILocalVariable(arg: 1, scope: !126, type: !7) // CHECK:STDOUT: !131 = !DILocation(line: 43, column: 5, scope: !126) -// CHECK:STDOUT: !132 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9", scope: null, file: !133, line: 88, type: !127, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !134) +// CHECK:STDOUT: !132 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65", scope: null, file: !133, line: 88, type: !127, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !134) // CHECK:STDOUT: !133 = !DIFile(filename: "{{.*}}/prelude/types/uint.carbon", directory: "") // CHECK:STDOUT: !134 = !{!135} // CHECK:STDOUT: !135 = !DILocalVariable(arg: 1, scope: !132, type: !7) // CHECK:STDOUT: !136 = !DILocation(line: 89, column: 12, scope: !132) // CHECK:STDOUT: !137 = !DILocation(line: 89, column: 5, scope: !132) -// CHECK:STDOUT: !138 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee", scope: null, file: !133, line: 80, type: !127, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !139) +// CHECK:STDOUT: !138 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56", scope: null, file: !133, line: 80, type: !127, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !139) // CHECK:STDOUT: !139 = !{!140} // CHECK:STDOUT: !140 = !DILocalVariable(arg: 1, scope: !138, type: !7) // CHECK:STDOUT: !141 = !DILocation(line: 82, column: 17, scope: !138) diff --git a/toolchain/lower/testdata/primitives/int_types.carbon b/toolchain/lower/testdata/primitives/int_types.carbon index 00e91cb74256..2caf33ffc340 100644 --- a/toolchain/lower/testdata/primitives/int_types.carbon +++ b/toolchain/lower/testdata/primitives/int_types.carbon @@ -171,67 +171,67 @@ fn ImplicitWidenUnsignedCustom(a: Core.UInt(4)) -> Core.UInt(5) { return a; } // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @_CImplicitWidenSigned.Main(i8 %a) #0 !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %From.as_type.as.ImplicitAs.impl.Convert.call = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.211c7f442b391488"(i8 %a), !dbg !11 +// CHECK:STDOUT: %From.as_type.as.ImplicitAs.impl.Convert.call = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.ea5e71259c8e1ed5"(i8 %a), !dbg !11 // CHECK:STDOUT: ret i32 %From.as_type.as.ImplicitAs.impl.Convert.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @_CImplicitWidenUnsigned.Main(i8 %a) #0 !dbg !12 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.call = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dbd6eca082a732b7"(i8 %a), !dbg !19 +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.call = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5a7b232341cee023"(i8 %a), !dbg !19 // CHECK:STDOUT: ret i32 %UInt.as.ImplicitAs.impl.Convert.call, !dbg !19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i32 @_CImplicitWidenUnsignedToSigned.Main(i8 %a) #0 !dbg !20 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.call = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9"(i8 %a), !dbg !25 +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.call = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65"(i8 %a), !dbg !25 // CHECK:STDOUT: ret i32 %UInt.as.ImplicitAs.impl.Convert.call, !dbg !25 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i5 @_CImplicitWidenCustom.Main(i4 %a) #0 !dbg !26 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %From.as_type.as.ImplicitAs.impl.Convert.call = call i5 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.913488c3cb524db0"(i4 %a), !dbg !33 +// CHECK:STDOUT: %From.as_type.as.ImplicitAs.impl.Convert.call = call i5 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.18d5d825d20d6d1d"(i4 %a), !dbg !33 // CHECK:STDOUT: ret i5 %From.as_type.as.ImplicitAs.impl.Convert.call, !dbg !33 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define i5 @_CImplicitWidenUnsignedCustom.Main(i4 %a) #0 !dbg !34 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.call = call i5 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.4c1b8e556dc24c05"(i4 %a), !dbg !41 +// CHECK:STDOUT: %UInt.as.ImplicitAs.impl.Convert.call = call i5 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.90a7baf5cbb65301"(i4 %a), !dbg !41 // CHECK:STDOUT: ret i5 %UInt.as.ImplicitAs.impl.Convert.call, !dbg !41 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.211c7f442b391488"(i8 %self) #0 !dbg !42 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.ea5e71259c8e1ed5"(i8 %self) #0 !dbg !42 { // CHECK:STDOUT: %1 = call i8 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.ca1ac10d3fc7c1a8"(i8 %self), !dbg !46 // CHECK:STDOUT: %2 = sext i8 %1 to i32, !dbg !47 // CHECK:STDOUT: ret i32 %2, !dbg !48 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dbd6eca082a732b7"(i8 %self) #0 !dbg !49 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d93106ca8c7912cd"(i8 %self), !dbg !53 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5a7b232341cee023"(i8 %self) #0 !dbg !49 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.7d2e9190ee7a1b3d"(i8 %self), !dbg !53 // CHECK:STDOUT: ret i32 %1, !dbg !54 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9"(i8 %self) #0 !dbg !55 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee"(i8 %self), !dbg !58 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65"(i8 %self) #0 !dbg !55 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56"(i8 %self), !dbg !58 // CHECK:STDOUT: ret i32 %1, !dbg !59 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i5 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.913488c3cb524db0"(i4 %self) #0 !dbg !60 { +// CHECK:STDOUT: define linkonce_odr i5 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.18d5d825d20d6d1d"(i4 %self) #0 !dbg !60 { // CHECK:STDOUT: %1 = call i4 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.044c7d430ddd4fd6"(i4 %self), !dbg !63 // CHECK:STDOUT: %2 = sext i4 %1 to i5, !dbg !64 // CHECK:STDOUT: ret i5 %2, !dbg !65 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i5 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.4c1b8e556dc24c05"(i4 %self) #0 !dbg !66 { -// CHECK:STDOUT: %1 = call i5 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.cc82cccb0d5a8ccf"(i4 %self), !dbg !69 +// CHECK:STDOUT: define linkonce_odr i5 @"_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.90a7baf5cbb65301"(i4 %self) #0 !dbg !66 { +// CHECK:STDOUT: %1 = call i5 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d0c1c4d75c10f692"(i4 %self), !dbg !69 // CHECK:STDOUT: ret i5 %1, !dbg !70 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -241,14 +241,14 @@ fn ImplicitWidenUnsignedCustom(a: Core.UInt(4)) -> Core.UInt(5) { return a; } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d93106ca8c7912cd"(i8 %from) #0 !dbg !77 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.7d2e9190ee7a1b3d"(i8 %from) #0 !dbg !77 { // CHECK:STDOUT: %1 = call i8 @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.ca1ac10d3fc7c1a8"(i8 %from), !dbg !80 // CHECK:STDOUT: %2 = zext i8 %1 to i32, !dbg !81 // CHECK:STDOUT: ret i32 %2, !dbg !82 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee"(i8 %from) #0 !dbg !83 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56"(i8 %from) #0 !dbg !83 { // CHECK:STDOUT: %1 = call i8 @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.ca1ac10d3fc7c1a8"(i8 %from), !dbg !86 // CHECK:STDOUT: %2 = zext i8 %1 to i32, !dbg !87 // CHECK:STDOUT: ret i32 %2, !dbg !88 @@ -260,7 +260,7 @@ fn ImplicitWidenUnsignedCustom(a: Core.UInt(4)) -> Core.UInt(5) { return a; } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i5 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.cc82cccb0d5a8ccf"(i4 %from) #0 !dbg !95 { +// CHECK:STDOUT: define linkonce_odr i5 @"_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d0c1c4d75c10f692"(i4 %from) #0 !dbg !95 { // CHECK:STDOUT: %1 = call i4 @"_CAsUInt.UInt.9452f4c51951679b.Core:AnyUInt.Core.044c7d430ddd4fd6"(i4 %from), !dbg !98 // CHECK:STDOUT: %2 = zext i4 %1 to i5, !dbg !99 // CHECK:STDOUT: ret i5 %2, !dbg !100 @@ -326,31 +326,31 @@ fn ImplicitWidenUnsignedCustom(a: Core.UInt(4)) -> Core.UInt(5) { return a; } // CHECK:STDOUT: !39 = !{!40} // CHECK:STDOUT: !40 = !DILocalVariable(arg: 1, scope: !34, type: !38) // CHECK:STDOUT: !41 = !DILocation(line: 8, column: 67, scope: !34) -// CHECK:STDOUT: !42 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.211c7f442b391488", scope: null, file: !43, line: 64, type: !5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !44) +// CHECK:STDOUT: !42 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.ea5e71259c8e1ed5", scope: null, file: !43, line: 64, type: !5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !44) // CHECK:STDOUT: !43 = !DIFile(filename: "{{.*}}/prelude/types/int.carbon", directory: "") // CHECK:STDOUT: !44 = !{!45} // CHECK:STDOUT: !45 = !DILocalVariable(arg: 1, scope: !42, type: !8) // CHECK:STDOUT: !46 = !DILocation(line: 66, column: 17, scope: !42) // CHECK:STDOUT: !47 = !DILocation(line: 66, column: 12, scope: !42) // CHECK:STDOUT: !48 = !DILocation(line: 66, column: 5, scope: !42) -// CHECK:STDOUT: !49 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.dbd6eca082a732b7", scope: null, file: !50, line: 88, type: !13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !51) +// CHECK:STDOUT: !49 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.5a7b232341cee023", scope: null, file: !50, line: 88, type: !13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !51) // CHECK:STDOUT: !50 = !DIFile(filename: "{{.*}}/prelude/types/uint.carbon", directory: "") // CHECK:STDOUT: !51 = !{!52} // CHECK:STDOUT: !52 = !DILocalVariable(arg: 1, scope: !49, type: !16) // CHECK:STDOUT: !53 = !DILocation(line: 89, column: 12, scope: !49) // CHECK:STDOUT: !54 = !DILocation(line: 89, column: 5, scope: !49) -// CHECK:STDOUT: !55 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.b26071071fee62b9", scope: null, file: !50, line: 88, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !56) +// CHECK:STDOUT: !55 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.19e5e288c25d9f65", scope: null, file: !50, line: 88, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !56) // CHECK:STDOUT: !56 = !{!57} // CHECK:STDOUT: !57 = !DILocalVariable(arg: 1, scope: !55, type: !16) // CHECK:STDOUT: !58 = !DILocation(line: 89, column: 12, scope: !55) // CHECK:STDOUT: !59 = !DILocation(line: 89, column: 5, scope: !55) -// CHECK:STDOUT: !60 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.913488c3cb524db0", scope: null, file: !43, line: 64, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !61) +// CHECK:STDOUT: !60 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.18d5d825d20d6d1d", scope: null, file: !43, line: 64, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !61) // CHECK:STDOUT: !61 = !{!62} // CHECK:STDOUT: !62 = !DILocalVariable(arg: 1, scope: !60, type: !30) // CHECK:STDOUT: !63 = !DILocation(line: 66, column: 17, scope: !60) // CHECK:STDOUT: !64 = !DILocation(line: 66, column: 12, scope: !60) // CHECK:STDOUT: !65 = !DILocation(line: 66, column: 5, scope: !60) -// CHECK:STDOUT: !66 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.4c1b8e556dc24c05", scope: null, file: !50, line: 88, type: !35, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !67) +// CHECK:STDOUT: !66 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:ImplicitAs.f48df0d8add56b17.Core.90a7baf5cbb65301", scope: null, file: !50, line: 88, type: !35, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !67) // CHECK:STDOUT: !67 = !{!68} // CHECK:STDOUT: !68 = !DILocalVariable(arg: 1, scope: !66, type: !38) // CHECK:STDOUT: !69 = !DILocation(line: 89, column: 12, scope: !66) @@ -361,13 +361,13 @@ fn ImplicitWidenUnsignedCustom(a: Core.UInt(4)) -> Core.UInt(5) { return a; } // CHECK:STDOUT: !74 = !{!75} // CHECK:STDOUT: !75 = !DILocalVariable(arg: 1, scope: !71, type: !8) // CHECK:STDOUT: !76 = !DILocation(line: 59, column: 28, scope: !71) -// CHECK:STDOUT: !77 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d93106ca8c7912cd", scope: null, file: !50, line: 72, type: !13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !78) +// CHECK:STDOUT: !77 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.7d2e9190ee7a1b3d", scope: null, file: !50, line: 72, type: !13, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !78) // CHECK:STDOUT: !78 = !{!79} // CHECK:STDOUT: !79 = !DILocalVariable(arg: 1, scope: !77, type: !16) // CHECK:STDOUT: !80 = !DILocation(line: 74, column: 17, scope: !77) // CHECK:STDOUT: !81 = !DILocation(line: 74, column: 12, scope: !77) // CHECK:STDOUT: !82 = !DILocation(line: 74, column: 5, scope: !77) -// CHECK:STDOUT: !83 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.1d53f86bcab954ee", scope: null, file: !50, line: 80, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !84) +// CHECK:STDOUT: !83 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.Int.9452f4c51951679b.Core:FromUInt.94db85caea4a44af.Core.3a8a0f77877b2b56", scope: null, file: !50, line: 80, type: !21, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !84) // CHECK:STDOUT: !84 = !{!85} // CHECK:STDOUT: !85 = !DILocalVariable(arg: 1, scope: !83, type: !16) // CHECK:STDOUT: !86 = !DILocation(line: 82, column: 17, scope: !83) @@ -379,7 +379,7 @@ fn ImplicitWidenUnsignedCustom(a: Core.UInt(4)) -> Core.UInt(5) { return a; } // CHECK:STDOUT: !92 = !{!93} // CHECK:STDOUT: !93 = !DILocalVariable(arg: 1, scope: !89, type: !30) // CHECK:STDOUT: !94 = !DILocation(line: 59, column: 28, scope: !89) -// CHECK:STDOUT: !95 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.cc82cccb0d5a8ccf", scope: null, file: !50, line: 72, type: !35, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !96) +// CHECK:STDOUT: !95 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.UInt.9452f4c51951679b.Core:FromUInt.a1a82301830d1e08.Core.d0c1c4d75c10f692", scope: null, file: !50, line: 72, type: !35, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !96) // CHECK:STDOUT: !96 = !{!97} // CHECK:STDOUT: !97 = !DILocalVariable(arg: 1, scope: !95, type: !38) // CHECK:STDOUT: !98 = !DILocation(line: 74, column: 17, scope: !95) diff --git a/toolchain/lower/testdata/primitives/optional.carbon b/toolchain/lower/testdata/primitives/optional.carbon index 6d6d7e313ad0..244c4e06f3a2 100644 --- a/toolchain/lower/testdata/primitives/optional.carbon +++ b/toolchain/lower/testdata/primitives/optional.carbon @@ -70,17 +70,17 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CConvert.Main(ptr sret(<{ i32, i1 }>) %return, ptr %o) #0 !dbg !11 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.b79ac2ab1b7701d6(ptr %o), !dbg !17 +// CHECK:STDOUT: %Optional.HasValue.call = call i1 @_CHasValue.Optional.Core.0da8924039c19c57(ptr %o), !dbg !17 // CHECK:STDOUT: br i1 %Optional.HasValue.call, label %if.then, label %if.else, !dbg !18 // CHECK:STDOUT: // CHECK:STDOUT: if.then: ; preds = %entry -// CHECK:STDOUT: %Optional.Get.call = call ptr @_CGet.Optional.Core.b79ac2ab1b7701d6(ptr %o), !dbg !19 +// CHECK:STDOUT: %Optional.Get.call = call ptr @_CGet.Optional.Core.0da8924039c19c57(ptr %o), !dbg !19 // CHECK:STDOUT: %.loc5_12.2 = load i32, ptr %Optional.Get.call, align 4, !dbg !20 -// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a77ff6e8edaf9e8d"(ptr %return, i32 %.loc5_12.2), !dbg !21 +// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a54358af69f96314"(ptr %return, i32 %.loc5_12.2), !dbg !21 // CHECK:STDOUT: ret void, !dbg !21 // CHECK:STDOUT: // CHECK:STDOUT: if.else: ; preds = %entry -// CHECK:STDOUT: call void @_CNone.Optional.Core.70a0b54a75854b7a(ptr %return), !dbg !22 +// CHECK:STDOUT: call void @_CNone.Optional.Core.882f3d2e2a8ead1b(ptr %return), !dbg !22 // CHECK:STDOUT: ret void, !dbg !23 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -96,29 +96,29 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: %_.var.loc17 = alloca <{ i32, i1 }>, align 4, !dbg !36 // CHECK:STDOUT: %_.var.loc18 = alloca <{ i32, i1 }>, align 4, !dbg !37 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var.loc11), !dbg !30 -// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a77ff6e8edaf9e8d"(ptr %_.var.loc11, i32 %a), !dbg !30 +// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a54358af69f96314"(ptr %_.var.loc11, i32 %a), !dbg !30 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var.loc12), !dbg !31 -// CHECK:STDOUT: call void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.36d191ed69f42abb"(ptr %_.var.loc12, i32 %a), !dbg !31 +// CHECK:STDOUT: call void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.609729d09847416f"(ptr %_.var.loc12, i32 %a), !dbg !31 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var.loc13), !dbg !32 -// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.6f97602f44c068f9"(ptr %_.var.loc13, i32 %a), !dbg !32 +// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.ce412def9e868b5d"(ptr %_.var.loc13, i32 %a), !dbg !32 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var.loc14), !dbg !33 -// CHECK:STDOUT: call void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.7e715d26c6bb9daa"(ptr %_.var.loc14, i32 %a), !dbg !33 +// CHECK:STDOUT: call void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.fa0564b68f069e2a"(ptr %_.var.loc14, i32 %a), !dbg !33 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var.loc15), !dbg !34 -// CHECK:STDOUT: call void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.36d191ed69f42abb"(ptr %_.var.loc15, i32 %b), !dbg !34 +// CHECK:STDOUT: call void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.609729d09847416f"(ptr %_.var.loc15, i32 %b), !dbg !34 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var.loc16), !dbg !35 -// CHECK:STDOUT: call void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.bd2b2818aef220bf"(ptr %_.var.loc16, i32 %b), !dbg !35 +// CHECK:STDOUT: call void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.f64024a5ce4d095b"(ptr %_.var.loc16, i32 %b), !dbg !35 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var.loc17), !dbg !36 -// CHECK:STDOUT: call void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.7e715d26c6bb9daa"(ptr %_.var.loc17, i32 %b), !dbg !36 +// CHECK:STDOUT: call void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.fa0564b68f069e2a"(ptr %_.var.loc17, i32 %b), !dbg !36 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var.loc18), !dbg !37 -// CHECK:STDOUT: call void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.7f331ac9d2b85055"(ptr %_.var.loc18, i32 %b), !dbg !37 -// CHECK:STDOUT: call void @"_COp.56bc00fa6756ea9e:core.Destroy.Core"(ptr %_.var.loc18), !dbg !37 -// CHECK:STDOUT: call void @"_COp.bc7b205814bb8542:core.Destroy.Core"(ptr %_.var.loc17), !dbg !36 -// CHECK:STDOUT: call void @"_COp.49575b3ccc332429:core.Destroy.Core"(ptr %_.var.loc16), !dbg !35 -// CHECK:STDOUT: call void @"_COp.30688d383ae72bab:core.Destroy.Core"(ptr %_.var.loc15), !dbg !34 -// CHECK:STDOUT: call void @"_COp.56bc00fa6756ea9e:core.Destroy.Core"(ptr %_.var.loc14), !dbg !33 -// CHECK:STDOUT: call void @"_COp.bc7b205814bb8542:core.Destroy.Core"(ptr %_.var.loc13), !dbg !32 -// CHECK:STDOUT: call void @"_COp.49575b3ccc332429:core.Destroy.Core"(ptr %_.var.loc12), !dbg !31 -// CHECK:STDOUT: call void @"_COp.30688d383ae72bab:core.Destroy.Core"(ptr %_.var.loc11), !dbg !30 +// CHECK:STDOUT: call void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.b2abc03f0db30d20"(ptr %_.var.loc18, i32 %b), !dbg !37 +// CHECK:STDOUT: call void @"_COp.bbab705fa0bfb19f:core.Destroy.Core"(ptr %_.var.loc18), !dbg !37 +// CHECK:STDOUT: call void @"_COp.ca42ae94aa3eb732:core.Destroy.Core"(ptr %_.var.loc17), !dbg !36 +// CHECK:STDOUT: call void @"_COp.09f529132e6100d8:core.Destroy.Core"(ptr %_.var.loc16), !dbg !35 +// CHECK:STDOUT: call void @"_COp.108a3738f6037ebf:core.Destroy.Core"(ptr %_.var.loc15), !dbg !34 +// CHECK:STDOUT: call void @"_COp.bbab705fa0bfb19f:core.Destroy.Core"(ptr %_.var.loc14), !dbg !33 +// CHECK:STDOUT: call void @"_COp.ca42ae94aa3eb732:core.Destroy.Core"(ptr %_.var.loc13), !dbg !32 +// CHECK:STDOUT: call void @"_COp.09f529132e6100d8:core.Destroy.Core"(ptr %_.var.loc12), !dbg !31 +// CHECK:STDOUT: call void @"_COp.108a3738f6037ebf:core.Destroy.Core"(ptr %_.var.loc11), !dbg !30 // CHECK:STDOUT: ret void, !dbg !38 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -153,13 +153,13 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.bc7b205814bb8542:core.Destroy.Core"(ptr %self) #0 !dbg !61 { +// CHECK:STDOUT: define weak_odr void @"_COp.ca42ae94aa3eb732:core.Destroy.Core"(ptr %self) #0 !dbg !61 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !64 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.56bc00fa6756ea9e:core.Destroy.Core"(ptr %self) #0 !dbg !65 { +// CHECK:STDOUT: define weak_odr void @"_COp.bbab705fa0bfb19f:core.Destroy.Core"(ptr %self) #0 !dbg !65 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !68 // CHECK:STDOUT: } @@ -189,37 +189,37 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.30688d383ae72bab:core.Destroy.Core"(ptr %self) #0 !dbg !85 { +// CHECK:STDOUT: define weak_odr void @"_COp.108a3738f6037ebf:core.Destroy.Core"(ptr %self) #0 !dbg !85 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !88 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define weak_odr void @"_COp.49575b3ccc332429:core.Destroy.Core"(ptr %self) #0 !dbg !89 { +// CHECK:STDOUT: define weak_odr void @"_COp.09f529132e6100d8:core.Destroy.Core"(ptr %self) #0 !dbg !89 { // CHECK:STDOUT: entry: // CHECK:STDOUT: ret void, !dbg !92 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.b79ac2ab1b7701d6(ptr %self) #0 !dbg !93 { +// CHECK:STDOUT: define linkonce_odr i1 @_CHasValue.Optional.Core.0da8924039c19c57(ptr %self) #0 !dbg !93 { // CHECK:STDOUT: %1 = call i1 @"_CHas.e8f8f92d3d08d149:OptionalStorage.Core.84588f41d61dafba"(ptr %self), !dbg !97 // CHECK:STDOUT: ret i1 %1, !dbg !98 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @_CGet.Optional.Core.b79ac2ab1b7701d6(ptr %self) #0 !dbg !99 { +// CHECK:STDOUT: define linkonce_odr ptr @_CGet.Optional.Core.0da8924039c19c57(ptr %self) #0 !dbg !99 { // CHECK:STDOUT: %1 = call ptr @"_CGet.e8f8f92d3d08d149:OptionalStorage.Core.84588f41d61dafba"(ptr %self), !dbg !102 // CHECK:STDOUT: ret ptr %1, !dbg !103 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a77ff6e8edaf9e8d"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !104 { -// CHECK:STDOUT: call void @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.70a0b54a75854b7a"(ptr %return, i32 %self), !dbg !109 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a54358af69f96314"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !104 { +// CHECK:STDOUT: call void @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.882f3d2e2a8ead1b"(ptr %return, i32 %self), !dbg !109 // CHECK:STDOUT: ret void, !dbg !110 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.70a0b54a75854b7a(ptr sret(<{ i32, i1 }>) %return) #0 !dbg !111 { +// CHECK:STDOUT: define linkonce_odr void @_CNone.Optional.Core.882f3d2e2a8ead1b(ptr sret(<{ i32, i1 }>) %return) #0 !dbg !111 { // CHECK:STDOUT: call void @"_CNone.74becf39533834ee:OptionalStorage.Core.b99f4a084b13a83f"(ptr %return), !dbg !114 // CHECK:STDOUT: ret void, !dbg !115 // CHECK:STDOUT: } @@ -228,44 +228,44 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #1 // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.36d191ed69f42abb"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !116 { -// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a77ff6e8edaf9e8d"(ptr %return, i32 %self), !dbg !120 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.609729d09847416f"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !116 { +// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a54358af69f96314"(ptr %return, i32 %self), !dbg !120 // CHECK:STDOUT: ret void, !dbg !121 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.6f97602f44c068f9"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !122 { -// CHECK:STDOUT: call void @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.04776faa19f4241b"(ptr %return, i32 %self), !dbg !125 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.ce412def9e868b5d"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !122 { +// CHECK:STDOUT: call void @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.37f30051bc69e53c"(ptr %return, i32 %self), !dbg !125 // CHECK:STDOUT: ret void, !dbg !126 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.7e715d26c6bb9daa"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !127 { -// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.6f97602f44c068f9"(ptr %return, i32 %self), !dbg !130 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.fa0564b68f069e2a"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !127 { +// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.ce412def9e868b5d"(ptr %return, i32 %self), !dbg !130 // CHECK:STDOUT: ret void, !dbg !131 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.36d191ed69f42abb"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !132 { -// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a77ff6e8edaf9e8d"(ptr %return, i32 %self), !dbg !135 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.609729d09847416f"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !132 { +// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a54358af69f96314"(ptr %return, i32 %self), !dbg !135 // CHECK:STDOUT: ret void, !dbg !136 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.bd2b2818aef220bf"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !137 { -// CHECK:STDOUT: call void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.36d191ed69f42abb"(ptr %return, i32 %self), !dbg !140 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.f64024a5ce4d095b"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !137 { +// CHECK:STDOUT: call void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.609729d09847416f"(ptr %return, i32 %self), !dbg !140 // CHECK:STDOUT: ret void, !dbg !141 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.7e715d26c6bb9daa"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !142 { -// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.6f97602f44c068f9"(ptr %return, i32 %self), !dbg !145 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.fa0564b68f069e2a"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !142 { +// CHECK:STDOUT: call void @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.ce412def9e868b5d"(ptr %return, i32 %self), !dbg !145 // CHECK:STDOUT: ret void, !dbg !146 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.7f331ac9d2b85055"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !147 { -// CHECK:STDOUT: call void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.7e715d26c6bb9daa"(ptr %return, i32 %self), !dbg !150 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.b2abc03f0db30d20"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !147 { +// CHECK:STDOUT: call void @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.fa0564b68f069e2a"(ptr %return, i32 %self), !dbg !150 // CHECK:STDOUT: ret void, !dbg !151 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -282,8 +282,8 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.70a0b54a75854b7a"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !162 { -// CHECK:STDOUT: call void @_CSome.Optional.Core.70a0b54a75854b7a(ptr %return, i32 %self), !dbg !165 +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.882f3d2e2a8ead1b"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !162 { +// CHECK:STDOUT: call void @_CSome.Optional.Core.882f3d2e2a8ead1b(ptr %return, i32 %self), !dbg !165 // CHECK:STDOUT: ret void, !dbg !166 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -295,31 +295,31 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.04776faa19f4241b"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !170 { +// CHECK:STDOUT: define linkonce_odr void @"_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.37f30051bc69e53c"(ptr sret(<{ i32, i1 }>) %return, i32 %self) #0 !dbg !170 { // CHECK:STDOUT: %temp = alloca i32, align 4, !dbg !173 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %temp), !dbg !173 -// CHECK:STDOUT: %1 = call i32 @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.a1e92423fb5cda0f"(i32 %self), !dbg !173 +// CHECK:STDOUT: %1 = call i32 @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.05d0592e4429cbdb"(i32 %self), !dbg !173 // CHECK:STDOUT: store i32 %1, ptr %temp, align 4, !dbg !173 // CHECK:STDOUT: %2 = load i32, ptr %temp, align 4, !dbg !173 -// CHECK:STDOUT: call void @_CSome.Optional.Core.442ff502447e2586(ptr %return, i32 %2), !dbg !174 +// CHECK:STDOUT: call void @_CSome.Optional.Core.4a718622f3aa3d30(ptr %return, i32 %2), !dbg !174 // CHECK:STDOUT: call void @"_COp.05c48b3d4126597e:core.Destroy.Core"(ptr %temp), !dbg !173 // CHECK:STDOUT: ret void, !dbg !175 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.70a0b54a75854b7a(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !176 { +// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.882f3d2e2a8ead1b(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !176 { // CHECK:STDOUT: call void @"_CSome.74becf39533834ee:OptionalStorage.Core.b99f4a084b13a83f"(ptr %return, i32 %value), !dbg !179 // CHECK:STDOUT: ret void, !dbg !180 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.a1e92423fb5cda0f"(i32 %self) #0 !dbg !181 { -// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %self), !dbg !184 +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.05d0592e4429cbdb"(i32 %self) #0 !dbg !181 { +// CHECK:STDOUT: %1 = call i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %self), !dbg !184 // CHECK:STDOUT: ret i32 %1, !dbg !185 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.442ff502447e2586(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !186 { +// CHECK:STDOUT: define linkonce_odr void @_CSome.Optional.Core.4a718622f3aa3d30(ptr sret(<{ i32, i1 }>) %return, i32 %value) #0 !dbg !186 { // CHECK:STDOUT: call void @"_CSome.74becf39533834ee:OptionalStorage.Core.9e376a14fbf8fb3d"(ptr %return, i32 %value), !dbg !189 // CHECK:STDOUT: ret void, !dbg !190 // CHECK:STDOUT: } @@ -334,7 +334,7 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47"(i32 %self) #0 !dbg !197 { +// CHECK:STDOUT: define linkonce_odr i32 @"_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659"(i32 %self) #0 !dbg !197 { // CHECK:STDOUT: %1 = call i32 @"_CAsInt.Int.9452f4c51951679b.Core:AnyInt.Core.be1e879c1ad406d8"(i32 %self), !dbg !203 // CHECK:STDOUT: ret i32 %1, !dbg !204 // CHECK:STDOUT: } @@ -360,11 +360,11 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; uselistorder directives -// CHECK:STDOUT: uselistorder ptr @"_COp.bc7b205814bb8542:core.Destroy.Core", { 1, 0 } -// CHECK:STDOUT: uselistorder ptr @"_COp.56bc00fa6756ea9e:core.Destroy.Core", { 1, 0 } -// CHECK:STDOUT: uselistorder ptr @"_COp.30688d383ae72bab:core.Destroy.Core", { 1, 0 } -// CHECK:STDOUT: uselistorder ptr @"_COp.49575b3ccc332429:core.Destroy.Core", { 1, 0 } -// CHECK:STDOUT: uselistorder ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a77ff6e8edaf9e8d", { 0, 1, 3, 2 } +// CHECK:STDOUT: uselistorder ptr @"_COp.ca42ae94aa3eb732:core.Destroy.Core", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_COp.bbab705fa0bfb19f:core.Destroy.Core", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_COp.108a3738f6037ebf:core.Destroy.Core", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_COp.09f529132e6100d8:core.Destroy.Core", { 1, 0 } +// CHECK:STDOUT: uselistorder ptr @"_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a54358af69f96314", { 0, 1, 3, 2 } // CHECK:STDOUT: uselistorder ptr @llvm.lifetime.start.p0, { 0, 8, 7, 6, 5, 4, 3, 2, 1 } // CHECK:STDOUT: // CHECK:STDOUT: attributes #0 = { nounwind } @@ -434,11 +434,11 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: !58 = !{!59} // CHECK:STDOUT: !59 = !DILocalVariable(arg: 1, scope: !57, type: !14) // CHECK:STDOUT: !60 = !DILocation(line: 18, column: 3, scope: !57) -// CHECK:STDOUT: !61 = distinct !DISubprogram(name: "Op", linkageName: "_COp.bc7b205814bb8542:core.Destroy.Core", scope: null, file: !1, line: 18, type: !40, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !62) +// CHECK:STDOUT: !61 = distinct !DISubprogram(name: "Op", linkageName: "_COp.ca42ae94aa3eb732:core.Destroy.Core", scope: null, file: !1, line: 18, type: !40, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !62) // CHECK:STDOUT: !62 = !{!63} // CHECK:STDOUT: !63 = !DILocalVariable(arg: 1, scope: !61, type: !14) // CHECK:STDOUT: !64 = !DILocation(line: 18, column: 3, scope: !61) -// CHECK:STDOUT: !65 = distinct !DISubprogram(name: "Op", linkageName: "_COp.56bc00fa6756ea9e:core.Destroy.Core", scope: null, file: !1, line: 18, type: !40, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !66) +// CHECK:STDOUT: !65 = distinct !DISubprogram(name: "Op", linkageName: "_COp.bbab705fa0bfb19f:core.Destroy.Core", scope: null, file: !1, line: 18, type: !40, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !66) // CHECK:STDOUT: !66 = !{!67} // CHECK:STDOUT: !67 = !DILocalVariable(arg: 1, scope: !65, type: !14) // CHECK:STDOUT: !68 = !DILocation(line: 18, column: 3, scope: !65) @@ -458,69 +458,69 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: !82 = !{!83} // CHECK:STDOUT: !83 = !DILocalVariable(arg: 1, scope: !81, type: !14) // CHECK:STDOUT: !84 = !DILocation(line: 16, column: 3, scope: !81) -// CHECK:STDOUT: !85 = distinct !DISubprogram(name: "Op", linkageName: "_COp.30688d383ae72bab:core.Destroy.Core", scope: null, file: !1, line: 16, type: !40, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !86) +// CHECK:STDOUT: !85 = distinct !DISubprogram(name: "Op", linkageName: "_COp.108a3738f6037ebf:core.Destroy.Core", scope: null, file: !1, line: 16, type: !40, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !86) // CHECK:STDOUT: !86 = !{!87} // CHECK:STDOUT: !87 = !DILocalVariable(arg: 1, scope: !85, type: !14) // CHECK:STDOUT: !88 = !DILocation(line: 16, column: 3, scope: !85) -// CHECK:STDOUT: !89 = distinct !DISubprogram(name: "Op", linkageName: "_COp.49575b3ccc332429:core.Destroy.Core", scope: null, file: !1, line: 16, type: !40, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !90) +// CHECK:STDOUT: !89 = distinct !DISubprogram(name: "Op", linkageName: "_COp.09f529132e6100d8:core.Destroy.Core", scope: null, file: !1, line: 16, type: !40, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !90) // CHECK:STDOUT: !90 = !{!91} // CHECK:STDOUT: !91 = !DILocalVariable(arg: 1, scope: !89, type: !14) // CHECK:STDOUT: !92 = !DILocation(line: 16, column: 3, scope: !89) -// CHECK:STDOUT: !93 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.b79ac2ab1b7701d6", scope: null, file: !94, line: 36, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !95) +// CHECK:STDOUT: !93 = distinct !DISubprogram(name: "HasValue", linkageName: "_CHasValue.Optional.Core.0da8924039c19c57", scope: null, file: !94, line: 36, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !95) // CHECK:STDOUT: !94 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !95 = !{!96} // CHECK:STDOUT: !96 = !DILocalVariable(arg: 1, scope: !93, type: !14) // CHECK:STDOUT: !97 = !DILocation(line: 37, column: 12, scope: !93) // CHECK:STDOUT: !98 = !DILocation(line: 37, column: 5, scope: !93) -// CHECK:STDOUT: !99 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.b79ac2ab1b7701d6", scope: null, file: !94, line: 39, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !100) +// CHECK:STDOUT: !99 = distinct !DISubprogram(name: "Get", linkageName: "_CGet.Optional.Core.0da8924039c19c57", scope: null, file: !94, line: 39, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !100) // CHECK:STDOUT: !100 = !{!101} // CHECK:STDOUT: !101 = !DILocalVariable(arg: 1, scope: !99, type: !14) // CHECK:STDOUT: !102 = !DILocation(line: 40, column: 12, scope: !99) // CHECK:STDOUT: !103 = !DILocation(line: 40, column: 5, scope: !99) -// CHECK:STDOUT: !104 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a77ff6e8edaf9e8d", scope: null, file: !94, line: 105, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !107) +// CHECK:STDOUT: !104 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.a54358af69f96314", scope: null, file: !94, line: 105, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !107) // CHECK:STDOUT: !105 = !DISubroutineType(types: !106) // CHECK:STDOUT: !106 = !{!14, !7} // CHECK:STDOUT: !107 = !{!108} // CHECK:STDOUT: !108 = !DILocalVariable(arg: 1, scope: !104, type: !7) // CHECK:STDOUT: !109 = !DILocation(line: 106, column: 12, scope: !104) // CHECK:STDOUT: !110 = !DILocation(line: 106, column: 5, scope: !104) -// CHECK:STDOUT: !111 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.70a0b54a75854b7a", scope: null, file: !94, line: 30, type: !112, spFlags: DISPFlagDefinition, unit: !0) +// CHECK:STDOUT: !111 = distinct !DISubprogram(name: "None", linkageName: "_CNone.Optional.Core.882f3d2e2a8ead1b", scope: null, file: !94, line: 30, type: !112, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !112 = !DISubroutineType(types: !113) // CHECK:STDOUT: !113 = !{!14} // CHECK:STDOUT: !114 = !DILocation(line: 31, column: 12, scope: !111) // CHECK:STDOUT: !115 = !DILocation(line: 31, column: 5, scope: !111) -// CHECK:STDOUT: !116 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.36d191ed69f42abb", scope: null, file: !117, line: 43, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !118) +// CHECK:STDOUT: !116 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.609729d09847416f", scope: null, file: !117, line: 43, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !118) // CHECK:STDOUT: !117 = !DIFile(filename: "{{.*}}/prelude/operators/as.carbon", directory: "") // CHECK:STDOUT: !118 = !{!119} // CHECK:STDOUT: !119 = !DILocalVariable(arg: 1, scope: !116, type: !7) // CHECK:STDOUT: !120 = !DILocation(line: 43, column: 40, scope: !116) // CHECK:STDOUT: !121 = !DILocation(line: 43, column: 33, scope: !116) -// CHECK:STDOUT: !122 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.6f97602f44c068f9", scope: null, file: !94, line: 105, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !123) +// CHECK:STDOUT: !122 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.538322f9fda4254f:ImplicitAs.a276ba298c70ba87.Core.ce412def9e868b5d", scope: null, file: !94, line: 105, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !123) // CHECK:STDOUT: !123 = !{!124} // CHECK:STDOUT: !124 = !DILocalVariable(arg: 1, scope: !122, type: !7) // CHECK:STDOUT: !125 = !DILocation(line: 106, column: 12, scope: !122) // CHECK:STDOUT: !126 = !DILocation(line: 106, column: 5, scope: !122) -// CHECK:STDOUT: !127 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.7e715d26c6bb9daa", scope: null, file: !117, line: 43, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !128) +// CHECK:STDOUT: !127 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.fa0564b68f069e2a", scope: null, file: !117, line: 43, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !128) // CHECK:STDOUT: !128 = !{!129} // CHECK:STDOUT: !129 = !DILocalVariable(arg: 1, scope: !127, type: !7) // CHECK:STDOUT: !130 = !DILocation(line: 43, column: 40, scope: !127) // CHECK:STDOUT: !131 = !DILocation(line: 43, column: 33, scope: !127) -// CHECK:STDOUT: !132 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.36d191ed69f42abb", scope: null, file: !117, line: 47, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !133) +// CHECK:STDOUT: !132 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.609729d09847416f", scope: null, file: !117, line: 47, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !133) // CHECK:STDOUT: !133 = !{!134} // CHECK:STDOUT: !134 = !DILocalVariable(arg: 1, scope: !132, type: !7) // CHECK:STDOUT: !135 = !DILocation(line: 47, column: 34, scope: !132) // CHECK:STDOUT: !136 = !DILocation(line: 47, column: 27, scope: !132) -// CHECK:STDOUT: !137 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.bd2b2818aef220bf", scope: null, file: !117, line: 47, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !138) +// CHECK:STDOUT: !137 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.f64024a5ce4d095b", scope: null, file: !117, line: 47, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !138) // CHECK:STDOUT: !138 = !{!139} // CHECK:STDOUT: !139 = !DILocalVariable(arg: 1, scope: !137, type: !7) // CHECK:STDOUT: !140 = !DILocation(line: 47, column: 34, scope: !137) // CHECK:STDOUT: !141 = !DILocation(line: 47, column: 27, scope: !137) -// CHECK:STDOUT: !142 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.7e715d26c6bb9daa", scope: null, file: !117, line: 47, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !143) +// CHECK:STDOUT: !142 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.fa0564b68f069e2a", scope: null, file: !117, line: 47, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !143) // CHECK:STDOUT: !143 = !{!144} // CHECK:STDOUT: !144 = !DILocalVariable(arg: 1, scope: !142, type: !7) // CHECK:STDOUT: !145 = !DILocation(line: 47, column: 34, scope: !142) // CHECK:STDOUT: !146 = !DILocation(line: 47, column: 27, scope: !142) -// CHECK:STDOUT: !147 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.7f331ac9d2b85055", scope: null, file: !117, line: 47, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !148) +// CHECK:STDOUT: !147 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.c18e58a62bf591fb:ImplicitAs.eb057aa32837c84e.Core.b2abc03f0db30d20", scope: null, file: !117, line: 47, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !148) // CHECK:STDOUT: !148 = !{!149} // CHECK:STDOUT: !149 = !DILocalVariable(arg: 1, scope: !147, type: !7) // CHECK:STDOUT: !150 = !DILocation(line: 47, column: 34, scope: !147) @@ -535,7 +535,7 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: !159 = !{!160} // CHECK:STDOUT: !160 = !DILocalVariable(arg: 1, scope: !158, type: !14) // CHECK:STDOUT: !161 = !DILocation(line: 176, column: 5, scope: !158) -// CHECK:STDOUT: !162 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.70a0b54a75854b7a", scope: null, file: !94, line: 80, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !163) +// CHECK:STDOUT: !162 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.9fdaf39d07a1dc4e:OptionalAs.24b7347a93330e68.Core.882f3d2e2a8ead1b", scope: null, file: !94, line: 80, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !163) // CHECK:STDOUT: !163 = !{!164} // CHECK:STDOUT: !164 = !DILocalVariable(arg: 1, scope: !162, type: !7) // CHECK:STDOUT: !165 = !DILocation(line: 81, column: 12, scope: !162) @@ -543,23 +543,23 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: !167 = distinct !DISubprogram(name: "None", linkageName: "_CNone.74becf39533834ee:OptionalStorage.Core.b99f4a084b13a83f", scope: null, file: !94, line: 125, type: !112, spFlags: DISPFlagDefinition, unit: !0) // CHECK:STDOUT: !168 = !DILocation(line: 128, column: 5, scope: !167) // CHECK:STDOUT: !169 = !DILocation(line: 129, column: 5, scope: !167) -// CHECK:STDOUT: !170 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.04776faa19f4241b", scope: null, file: !94, line: 87, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !171) +// CHECK:STDOUT: !170 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.d62727437df45535:OptionalAs.1dac4564233fecd1.Core.37f30051bc69e53c", scope: null, file: !94, line: 87, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !171) // CHECK:STDOUT: !171 = !{!172} // CHECK:STDOUT: !172 = !DILocalVariable(arg: 1, scope: !170, type: !7) // CHECK:STDOUT: !173 = !DILocation(line: 88, column: 29, scope: !170) // CHECK:STDOUT: !174 = !DILocation(line: 88, column: 12, scope: !170) // CHECK:STDOUT: !175 = !DILocation(line: 88, column: 5, scope: !170) -// CHECK:STDOUT: !176 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.70a0b54a75854b7a", scope: null, file: !94, line: 33, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !177) +// CHECK:STDOUT: !176 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.882f3d2e2a8ead1b", scope: null, file: !94, line: 33, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !177) // CHECK:STDOUT: !177 = !{!178} // CHECK:STDOUT: !178 = !DILocalVariable(arg: 1, scope: !176, type: !7) // CHECK:STDOUT: !179 = !DILocation(line: 34, column: 12, scope: !176) // CHECK:STDOUT: !180 = !DILocation(line: 34, column: 5, scope: !176) -// CHECK:STDOUT: !181 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.a1e92423fb5cda0f", scope: null, file: !117, line: 43, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !182) +// CHECK:STDOUT: !181 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.ef077c075a7e2432:ImplicitAs.ad22d1bbc0605210.Core.05d0592e4429cbdb", scope: null, file: !117, line: 43, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !182) // CHECK:STDOUT: !182 = !{!183} // CHECK:STDOUT: !183 = !DILocalVariable(arg: 1, scope: !181, type: !7) // CHECK:STDOUT: !184 = !DILocation(line: 43, column: 40, scope: !181) // CHECK:STDOUT: !185 = !DILocation(line: 43, column: 33, scope: !181) -// CHECK:STDOUT: !186 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.442ff502447e2586", scope: null, file: !94, line: 33, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !187) +// CHECK:STDOUT: !186 = distinct !DISubprogram(name: "Some", linkageName: "_CSome.Optional.Core.4a718622f3aa3d30", scope: null, file: !94, line: 33, type: !105, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !187) // CHECK:STDOUT: !187 = !{!188} // CHECK:STDOUT: !188 = !DILocalVariable(arg: 1, scope: !186, type: !7) // CHECK:STDOUT: !189 = !DILocation(line: 34, column: 12, scope: !186) @@ -570,7 +570,7 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: !194 = !DILocation(line: 137, column: 5, scope: !191) // CHECK:STDOUT: !195 = !DILocation(line: 138, column: 5, scope: !191) // CHECK:STDOUT: !196 = !DILocation(line: 139, column: 5, scope: !191) -// CHECK:STDOUT: !197 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.40372ba0ea03ef47", scope: null, file: !198, line: 64, type: !199, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !201) +// CHECK:STDOUT: !197 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.45e1f8de18643ddf:ImplicitAs.0bc6489996802dd4.Core.f0377c795e793659", scope: null, file: !198, line: 64, type: !199, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !201) // CHECK:STDOUT: !198 = !DIFile(filename: "{{.*}}/prelude/types/int.carbon", directory: "") // CHECK:STDOUT: !199 = !DISubroutineType(types: !200) // CHECK:STDOUT: !200 = !{!7, !7} @@ -610,12 +610,12 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define void @_CF.Main(ptr sret({ {}, i1 }) %return, ptr %c) #0 !dbg !11 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @"_COp.Optional.24b7347a93330e68.Core:Copy.Core.da424a1efa3a0e0f"(ptr %return, ptr %c), !dbg !16 +// CHECK:STDOUT: call void @"_COp.Optional.24b7347a93330e68.Core:Copy.Core.88e3fda57ea0cece"(ptr %return, ptr %c), !dbg !16 // CHECK:STDOUT: ret void, !dbg !17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr void @"_COp.Optional.24b7347a93330e68.Core:Copy.Core.da424a1efa3a0e0f"(ptr sret({ {}, i1 }) %return, ptr %self) #0 !dbg !18 { +// CHECK:STDOUT: define linkonce_odr void @"_COp.Optional.24b7347a93330e68.Core:Copy.Core.88e3fda57ea0cece"(ptr sret({ {}, i1 }) %return, ptr %self) #0 !dbg !18 { // CHECK:STDOUT: call void @"_CCopy.5d6f3f3a4b44a8f1:OptionalStorage.Core.49fa0e4cc21a3ef6"(ptr %return, ptr %self), !dbg !22 // CHECK:STDOUT: ret void, !dbg !23 // CHECK:STDOUT: } @@ -682,7 +682,7 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: !15 = !DILocalVariable(arg: 1, scope: !11, type: !7) // CHECK:STDOUT: !16 = !DILocation(line: 11, column: 10, scope: !11) // CHECK:STDOUT: !17 = !DILocation(line: 11, column: 3, scope: !11) -// CHECK:STDOUT: !18 = distinct !DISubprogram(name: "Op", linkageName: "_COp.Optional.24b7347a93330e68.Core:Copy.Core.da424a1efa3a0e0f", scope: null, file: !19, line: 50, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !20) +// CHECK:STDOUT: !18 = distinct !DISubprogram(name: "Op", linkageName: "_COp.Optional.24b7347a93330e68.Core:Copy.Core.88e3fda57ea0cece", scope: null, file: !19, line: 50, type: !12, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !20) // CHECK:STDOUT: !19 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !20 = !{!21} // CHECK:STDOUT: !21 = !DILocalVariable(arg: 1, scope: !18, type: !7) @@ -723,12 +723,12 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: ; Function Attrs: nounwind // CHECK:STDOUT: define ptr @_CF.Main(ptr %c) #0 !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %Optional.as.Copy.impl.Op.call = call ptr @"_COp.Optional.24b7347a93330e68.Core:Copy.Core.4791ff83c858ed65"(ptr %c), !dbg !10 +// CHECK:STDOUT: %Optional.as.Copy.impl.Op.call = call ptr @"_COp.Optional.24b7347a93330e68.Core:Copy.Core.ecdff5bffbafad2d"(ptr %c), !dbg !10 // CHECK:STDOUT: ret ptr %Optional.as.Copy.impl.Op.call, !dbg !11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: ; Function Attrs: nounwind -// CHECK:STDOUT: define linkonce_odr ptr @"_COp.Optional.24b7347a93330e68.Core:Copy.Core.4791ff83c858ed65"(ptr %self) #0 !dbg !12 { +// CHECK:STDOUT: define linkonce_odr ptr @"_COp.Optional.24b7347a93330e68.Core:Copy.Core.ecdff5bffbafad2d"(ptr %self) #0 !dbg !12 { // CHECK:STDOUT: ret ptr %self, !dbg !16 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -749,7 +749,7 @@ fn F(c: Core.Optional(C*)) -> Core.Optional(C*) { // CHECK:STDOUT: !9 = !DILocalVariable(arg: 1, scope: !4, type: !7) // CHECK:STDOUT: !10 = !DILocation(line: 6, column: 10, scope: !4) // CHECK:STDOUT: !11 = !DILocation(line: 6, column: 3, scope: !4) -// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Op", linkageName: "_COp.Optional.24b7347a93330e68.Core:Copy.Core.4791ff83c858ed65", scope: null, file: !13, line: 50, type: !5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !14) +// CHECK:STDOUT: !12 = distinct !DISubprogram(name: "Op", linkageName: "_COp.Optional.24b7347a93330e68.Core:Copy.Core.ecdff5bffbafad2d", scope: null, file: !13, line: 50, type: !5, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !14) // CHECK:STDOUT: !13 = !DIFile(filename: "{{.*}}/prelude/types/optional.carbon", directory: "") // CHECK:STDOUT: !14 = !{!15} // CHECK:STDOUT: !15 = !DILocalVariable(arg: 1, scope: !12, type: !7) diff --git a/toolchain/sem_ir/dump.cpp b/toolchain/sem_ir/dump.cpp index 3ac1580a7a7c..3d0537f069af 100644 --- a/toolchain/sem_ir/dump.cpp +++ b/toolchain/sem_ir/dump.cpp @@ -29,6 +29,18 @@ static auto DumpNameIfValid(const File& file, NameId name_id) -> std::string { return out.TakeStr(); } +static auto DumpNameOfEntityName(const File& file, + const EntityName& entity_name) -> std::string { + RawStringOstream out; + out << " `"; + out << file.names().GetFormatted(entity_name.name_id); + if (entity_name.is_frozen_period_self) { + out << "[frozen]"; + } + out << "`"; + return out.TakeStr(); +} + static auto DumpLocSummary(const File& file, LocId loc_id) -> std::string { RawStringOstream out; // TODO: If the canonical location is None but the original is an InstId, @@ -223,7 +235,7 @@ LLVM_DUMP_METHOD auto Dump(const File& file, EntityNameId entity_name_id) out << entity_name_id; if (entity_name_id.has_value()) { auto entity_name = file.entity_names().Get(entity_name_id); - out << ": " << entity_name << DumpNameIfValid(file, entity_name.name_id); + out << ": " << entity_name << DumpNameOfEntityName(file, entity_name); } return out.TakeStr(); } @@ -384,8 +396,7 @@ static auto DumpInstCommonDetails(const File& file, const Inst& inst, if (inst.arg0_and_kind().kind() == IdKind::For) { auto entity_name_id = EntityNameId(inst.arg0()); out << "\n - name:" - << DumpNameIfValid(file, - file.entity_names().Get(entity_name_id).name_id); + << DumpNameOfEntityName(file, file.entity_names().Get(entity_name_id)); } if (inst.type_id().has_value()) { diff --git a/toolchain/sem_ir/entity_name.h b/toolchain/sem_ir/entity_name.h index 94b2ddc35fbf..805ce41000b6 100644 --- a/toolchain/sem_ir/entity_name.h +++ b/toolchain/sem_ir/entity_name.h @@ -17,7 +17,11 @@ struct EntityName : public Printable { auto Print(llvm::raw_ostream& out) const -> void { out << "{name: " << name_id << ", parent_scope: " << parent_scope_id << ", index: " << bind_index_value << ", is_template: " << is_template - << ", is_unused: " << is_unused << ", form: " << form_id << "}"; + << ", is_unused: " << is_unused; + if (name_id == SemIR::NameId::PeriodSelf) { + out << ", is_frozen_period_self: " << is_frozen_period_self << "}"; + } + out << ", form: " << form_id << "}"; } friend auto CarbonHashtableEq(const EntityName& lhs, const EntityName& rhs) @@ -53,11 +57,15 @@ struct EntityName : public Printable { // them for other kinds of `EntityName`. // The bind_index() value, unwrapped so it can be stored in a bit-field. - int32_t bind_index_value : 30 = CompileTimeBindIndex::None.index; + int32_t bind_index_value : 29 = CompileTimeBindIndex::None.index; // Whether this binding is a template parameter. bool is_template : 1 = false; // Whether this binding is marked unused. bool is_unused : 1 = false; + // Whether this binding is a `.Self` symbolic binding, within the scope of the + // `.Self` name during facet type under construction. Such bindings cannot be + // replaced during identify. + bool is_frozen_period_self : 1 = false; // The declared form of the binding. This is guaranteed to be set for // `:?` bindings, and may be set for other binding kinds as well. @@ -77,12 +85,14 @@ struct EntityNameStore // Adds an entity name for a symbolic binding. auto AddSymbolicBindingName(NameId name_id, NameScopeId parent_scope_id, CompileTimeBindIndex bind_index, bool is_template, - bool is_unused) -> EntityNameId { + bool is_unused, bool is_frozen_period_self) + -> EntityNameId { EntityName name = {.name_id = name_id, .parent_scope_id = parent_scope_id, .bind_index_value = bind_index.index, .is_template = is_template, - .is_unused = is_unused}; + .is_unused = is_unused, + .is_frozen_period_self = is_frozen_period_self}; CARBON_CHECK(name.bind_index_value == bind_index.index, "Bind index out of range for bit-field: {0}", bind_index.index); diff --git a/toolchain/sem_ir/inst_fingerprinter.cpp b/toolchain/sem_ir/inst_fingerprinter.cpp index d1a579f4419d..6a12538b320f 100644 --- a/toolchain/sem_ir/inst_fingerprinter.cpp +++ b/toolchain/sem_ir/inst_fingerprinter.cpp @@ -242,6 +242,9 @@ struct Worklist { // Add a string to the contents. auto AddString(llvm::StringRef string) -> void { store->AddString(string); } + // Add an integer to the contents. + auto AddInteger(uint64_t value) -> void { store->AddInteger(value); } + // Each of the following `Add` functions adds a typed argument to the contents // of the current instruction. If we don't yet have a fingerprint for the // argument, it instead adds that argument to the worklist instead. @@ -280,6 +283,9 @@ struct Worklist { // also be a compatible change from the perspective of users of a generic. } else { Add(entity_name.name_id); + if (entity_name.name_id == SemIR::NameId::PeriodSelf) { + AddInteger(entity_name.is_frozen_period_self); + } } Add(entity_name.parent_scope_id); diff --git a/toolchain/sem_ir/inst_namer.cpp b/toolchain/sem_ir/inst_namer.cpp index 9b3ca9a8818f..fc00b6b6cb94 100644 --- a/toolchain/sem_ir/inst_namer.cpp +++ b/toolchain/sem_ir/inst_namer.cpp @@ -53,6 +53,13 @@ class InstNamer::NamingContext { auto AddStructTypeInstName(StructType struct_ty, llvm::StringRef type_suffix, llvm::StringRef name_suffix) -> void; + // Adds the instruction's name by `EntityNameId`. + // + // Prefer this over AddInstNameId when the inst has an EntityNameId, as the + // resulting name may have annotations added from the EntityName. + auto AddInstEntityNameId(EntityNameId entity_name_id, + llvm::StringRef suffix = "") -> void; + // Adds the instruction's name by `NameId`. auto AddInstNameId(NameId name_id, llvm::StringRef suffix = "") -> void { AddInstName((sem_ir().names().GetIRBaseName(name_id) + suffix).str()); @@ -888,6 +895,19 @@ auto InstNamer::NamingContext::AddStructTypeInstName( AddInstName(out.TakeStr()); } +auto InstNamer::NamingContext::AddInstEntityNameId(EntityNameId entity_name_id, + llvm::StringRef suffix) + -> void { + RawStringOstream name; + const auto& entity_name = sem_ir().entity_names().Get(entity_name_id); + name << sem_ir().names().GetIRBaseName(entity_name.name_id); + if (entity_name.is_frozen_period_self) { + name << ".frozen"; + } + name << suffix; + AddInstName(name.TakeStr()); +} + auto InstNamer::NamingContext::AddIntOrFloatTypeName(char type_literal_prefix, InstId bit_width_id, llvm::StringRef suffix) @@ -949,15 +969,15 @@ auto InstNamer::NamingContext::NameInst() -> void { return; } case CARBON_KIND_ANY(AnyBindingOrExportDecl, inst): { - AddInstNameId(sem_ir().entity_names().Get(inst.entity_name_id).name_id); + AddInstEntityNameId(inst.entity_name_id); return; } case CARBON_KIND_ANY(AnyBindingPattern, inst): { - auto name_id = NameId::Underscore; if (inst.entity_name_id.has_value()) { - name_id = sem_ir().entity_names().Get(inst.entity_name_id).name_id; + AddInstEntityNameId(inst.entity_name_id, ".patt"); + } else { + AddInstNameId(NameId::Underscore, ".patt"); } - AddInstNameId(name_id, ".patt"); return; } case CARBON_KIND(BoolLiteral inst): { @@ -1036,7 +1056,7 @@ auto InstNamer::NamingContext::NameInst() -> void { return; } case CARBON_KIND(CppTemplateNameType inst): { - AddInstNameId(sem_ir().entity_names().Get(inst.name_id).name_id, ".type"); + AddInstEntityNameId(inst.name_id, ".type"); return; } case CustomWitness::Kind: { @@ -1052,16 +1072,12 @@ auto InstNamer::NamingContext::NameInst() -> void { return; } case CARBON_KIND(FacetAccessType inst): { - auto name_id = SemIR::NameId::None; if (auto name = sem_ir().insts().TryGetAs(inst.facet_value_inst_id)) { - name_id = name->name_id; + AddInstNameId(name->name_id, ".as_type"); } else if (auto bind = sem_ir().insts().TryGetAs( inst.facet_value_inst_id)) { - name_id = sem_ir().entity_names().Get(bind->entity_name_id).name_id; - } - if (name_id.has_value()) { - AddInstNameId(name_id, ".as_type"); + AddInstEntityNameId(bind->entity_name_id, ".as_type"); } else { AddInstName("as_type"); } @@ -1366,6 +1382,22 @@ auto InstNamer::NamingContext::NameInst() -> void { PushBlockId(require_scope_id, inst.decl_block_id); return; } + case Carbon::SemIR::RequirementBaseFacetType::Kind: { + AddInstName("base_facet_type"); + return; + } + case Carbon::SemIR::RequirementEquivalent::Kind: { + AddInstName("equiv"); + return; + } + case Carbon::SemIR::RequirementImpls::Kind: { + AddInstName("impls"); + return; + } + case Carbon::SemIR::RequirementRewrite::Kind: { + AddInstName("rewrite"); + return; + } case ReturnSlotPattern::Kind: { AddInstNameId(NameId::ReturnSlot, ".patt"); return; @@ -1426,9 +1458,7 @@ auto InstNamer::NamingContext::NameInst() -> void { } else if (auto template_name_ty = sem_ir().types().TryGetAs( inst.type_id)) { - AddInstNameId( - sem_ir().entity_names().Get(template_name_ty->name_id).name_id, - ".template"); + AddInstEntityNameId(template_name_ty->name_id, ".template"); } else { if (sem_ir().inst_blocks().Get(inst.elements_id).empty()) { AddInstName("empty_struct"); diff --git a/toolchain/sem_ir/typed_insts.h b/toolchain/sem_ir/typed_insts.h index 9c9ca7985afe..9dba76d8fbb4 100644 --- a/toolchain/sem_ir/typed_insts.h +++ b/toolchain/sem_ir/typed_insts.h @@ -1641,7 +1641,7 @@ struct RequirementBaseFacetType { static constexpr auto Kind = InstKind::RequirementBaseFacetType.Define( {.ir_name = "requirement_base_facet_type", - .constant_kind = InstConstantKind::Never, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // No type since not an expression @@ -1658,7 +1658,7 @@ struct RequirementEquivalent { static constexpr auto Kind = InstKind::RequirementEquivalent.Define( {.ir_name = "requirement_equivalent", - .constant_kind = InstConstantKind::Never, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // No type since not an expression @@ -1673,7 +1673,7 @@ struct RequirementImpls { static constexpr auto Kind = InstKind::RequirementImpls.Define( {.ir_name = "requirement_impls", - .constant_kind = InstConstantKind::Never, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // No type since not an expression @@ -1688,7 +1688,7 @@ struct RequirementRewrite { static constexpr auto Kind = InstKind::RequirementRewrite.Define( {.ir_name = "requirement_rewrite", - .constant_kind = InstConstantKind::Never, + .constant_kind = InstConstantKind::AlwaysUnique, .is_lowered = false}); // No type since not an expression