From be0f11be9593a1fa63ed4616993d5f0ab4dcf1a3 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 2 Nov 2026 20:05:00 +0000 Subject: [PATCH] Build a generic scope around `where` expressions (#8062) A `where` expression can have symbolic references to `.Self` inside it, but those references do not represent symbolic instructions that should be part of an enclosing generic eval block. They are internal details of the facet type, and as such they are PeriodSelfSymbolic, not Symbolic. The WhereExpr evaluation is careful to produce a Symbolic constant value only if it has symbolic dependencies on the LHS of the `where`, which avoids leaking the symbolic nature of `.Self` into he facet type's constant value. But until now, those PeriodSelfSymbolic insts could still leak into the enclosing eval block if they ended up in an operand of a Call expression. A compile-time Call expr evaluates to a TemplateSymbolic phase constant if it's not concrete, which includes PeriodSelfSymbolic, because we don't want to evaluate the Call expr until the `.Self` gets replaced during identify. But that means the Call constant value, and its operands including PeriodSelfSymbolic constants, all end up in the eval block. We fix this by making Call evaluate to a PeriodSelfSymbolic phase if its input phase is PeriodSelfSymbolic. This keeps the RHS of the `where` expression self-contained. If the facet type is concrete, then it doesn't add any instructions to the enclosing eval block (which may not exist at all in a non-generic context). Regardless, when we identify the facet type and replace `.Self`, the dependent Call expression will be rebuilt as well and it will evaluate as appropriate. We also enclose the `where` expression in its own generic scope. This means that instructions which are not part of the facet type do not end up in an eval block. They may be symbolic instructions, and they will not get updated by a specific when it's applied the enclosing generic anymore. But since they are not part of the facet type their substitution is not required. The new test had an incorrectly elided SpecificImplFunction instruction in the resulting semir, as SubstPeriodSelf was using the location of the input canonical instructions as the location for the results which resulted in an instruction without a location. We fix that by using `loc_id_` in the subst rebuild. Formatting now saw the initialization of a value from an `eval fn` call to a function in a witness table, so it needed to be taught to look through ImplWitnessAssociatedConstant (which is what we find in the witness table). --- toolchain/check/call.cpp | 26 +- toolchain/check/eval.cpp | 9 +- toolchain/check/handle_where.cpp | 11 + toolchain/check/period_self.cpp | 4 +- .../check/testdata/facet/period_self.carbon | 205 ++++- toolchain/check/testdata/for/actual.carbon | 62 +- .../generic/dot_self_symbolic_type.carbon | 86 +- ...g_generic_inside_rewrite_constraint.carbon | 177 ++-- ...pecialization_with_symbolic_rewrite.carbon | 142 ++- .../check/testdata/interface/observe.carbon | 16 +- .../check/testdata/interface/require.carbon | 6 +- .../cpp/operators/arithmetic_operators.carbon | 819 ++++++------------ .../testdata/named_constraint/require.carbon | 6 +- .../overloaded/index_with_prelude.carbon | 18 +- .../testdata/where_expr/dot_self_index.carbon | 73 +- toolchain/sem_ir/expr_info.cpp | 7 + 16 files changed, 703 insertions(+), 964 deletions(-) diff --git a/toolchain/check/call.cpp b/toolchain/check/call.cpp index abad41109c7e..04a077fd704d 100644 --- a/toolchain/check/call.cpp +++ b/toolchain/check/call.cpp @@ -195,23 +195,21 @@ static auto BuildCalleeSpecificFunction( // This is an associated function in an interface; the callee is the // specific function in the impl that corresponds to the specific function // we deduced. - callee_id = - GetOrAddInst(context, SemIR::LocId(generic_callee_id), - SemIR::SpecificImplFunction{ - .type_id = GetSingletonType( - context, SemIR::SpecificFunctionType::TypeInstId), - .callee_id = generic_callee_id, - .specific_id = callee_specific_id}); + callee_id = GetOrAddInst( + context, SemIR::LocId(generic_callee_id), + {.type_id = + GetSingletonType(context, SemIR::SpecificFunctionType::TypeInstId), + .callee_id = generic_callee_id, + .specific_id = callee_specific_id}); } else { // This is a regular generic function. The callee is the specific function // we deduced. - callee_id = - GetOrAddInst(context, SemIR::LocId(generic_callee_id), - SemIR::SpecificFunction{ - .type_id = GetSingletonType( - context, SemIR::SpecificFunctionType::TypeInstId), - .callee_id = generic_callee_id, - .specific_id = callee_specific_id}); + callee_id = GetOrAddInst( + context, SemIR::LocId(generic_callee_id), + {.type_id = + GetSingletonType(context, SemIR::SpecificFunctionType::TypeInstId), + .callee_id = generic_callee_id, + .specific_id = callee_specific_id}); } // Add the `self` argument back if there was one. diff --git a/toolchain/check/eval.cpp b/toolchain/check/eval.cpp index fb922513f831..b96c24376b99 100644 --- a/toolchain/check/eval.cpp +++ b/toolchain/check/eval.cpp @@ -2922,11 +2922,14 @@ static auto MakeConstantForCall(EvalContext& eval_context, // Handle calls to `eval` and `musteval` functions. if (evaluation_mode != SemIR::Function::EvaluationMode::None) { // A non-concrete call to `eval` or `musteval` is a template symbolic - // constant, regardless of the phase of the arguments. + // constant, unless it is only dependent on `.Self`. Then preserve that so + // a Call on the RHS of a `where` does not change the phase of the whole + // facet type. if (phase != Phase::Concrete) { CARBON_CHECK(phase <= Phase::TemplateSymbolic); - return MakeConstantResult(eval_context.context(), call, - Phase::TemplateSymbolic); + phase = phase == Phase::PeriodSelfSymbolic ? Phase::PeriodSelfSymbolic + : Phase::TemplateSymbolic; + return MakeConstantResult(eval_context.context(), call, phase); } // TODO: Instead of performing the call immediately, add it to a work queue diff --git a/toolchain/check/handle_where.cpp b/toolchain/check/handle_where.cpp index 4e2f321747fd..785d420cf561 100644 --- a/toolchain/check/handle_where.cpp +++ b/toolchain/check/handle_where.cpp @@ -209,6 +209,7 @@ auto HandleParseNode(Context& context, Parse::WhereOperandId node_id) -> bool { } } + StartGenericDecl(context); return true; } @@ -608,6 +609,16 @@ auto HandleParseNode(Context& context, Parse::WhereExprId node_id) -> bool { context, where_loc, requirements_id); requirements_id = ThawPeriodSelfInRequirements(context, requirements_id); + // We make and discard a generic because we may have instructions inside which + // are only PeriodSelfDependent. These should not be part of any enclosing + // generic. A facet type is only symbolic if it depends on symbolic values + // from outside the facet type (which are Symbolic rather than + // PeriodSelfSymbolic). If the resulting facet type is Symbolic, the Symbolic + // instructions that it depends on (which are being discarded in the eval + // block here) will be added as dependent instructions of the facet type in + // the enclosing generic. + DiscardGenericDecl(context); + AddInstAndPush( context, node_id, {.type_id = type_id, .requirements_id = requirements_id}); diff --git a/toolchain/check/period_self.cpp b/toolchain/check/period_self.cpp index 425b930416b1..1e294a3287f9 100644 --- a/toolchain/check/period_self.cpp +++ b/toolchain/check/period_self.cpp @@ -101,14 +101,14 @@ class SubstPeriodSelfCallbacks : public SubstInstCallbacks { return SubstOperandsSkipType; } - auto Rebuild(SemIR::InstId orig_inst_id, SemIR::Inst new_inst) + auto Rebuild(SemIR::InstId /*orig_inst_id*/, SemIR::Inst new_inst) -> SemIR::InstId override { if (rebuild_callback_) { if (auto inst_id = rebuild_callback_(new_inst); inst_id.has_value()) { return inst_id; } } - return RebuildNewInst(SemIR::LocId(orig_inst_id), new_inst); + return RebuildNewInst(loc_id_, new_inst); } private: diff --git a/toolchain/check/testdata/facet/period_self.carbon b/toolchain/check/testdata/facet/period_self.carbon index f322704fe03a..83fd6d15a5bb 100644 --- a/toolchain/check/testdata/facet/period_self.carbon +++ b/toolchain/check/testdata/facet/period_self.carbon @@ -797,7 +797,7 @@ interface Z(T: type); // CHECK:STDERR: fn F(generic _: C(Z(.Self))) {} -// --- fail_todo_period_self_in_generic_argument.carbon +// --- fail_todo_period_self_in_interface_generic_argument.carbon library "[[@TEST_NAME]]"; interface Z { @@ -811,11 +811,37 @@ interface Y(T: type) { eval fn YF() -> T; } -// TODO: We crash if this impl is not generic, as the call to `.YF()` produces a -// symbolic-dependent instruction, but there's no generic eval block for it. -// CHECK:STDERR: fail_todo_period_self_in_generic_argument.carbon:[[@LINE+2]]:60-64: error: cannot convert type `.(Y(Z where .(Z.Z1) = ()).YF)()` that implements `Z where .(Z.Z1) = ()` into type implementing `Z where .(Z.Z1) = ()` [ConversionFailureFacetToFacet] +// CHECK:STDERR: fail_todo_period_self_in_interface_generic_argument.carbon:[[@LINE+2]]:44-48: error: cannot convert type `.(Y(Z where .(Z.Z1) = ()).YF)()` that implements `Z where .(Z.Z1) = ()` into type implementing `Z where .(Z.Z1) = ()` [ConversionFailureFacetToFacet] // CHECK:STDERR: -impl forall [T: type] T as Y(Z where .Z1 = ()) where .Y1 = .YF() {} +impl () as Y(Z where .Z1 = ()) where .Y1 = .YF() {} + +// --- period_self_in_function_generic_argument.carbon +library "[[@TEST_NAME]]"; + +interface Z { + let Z1: type; +} +interface Y { + eval fn Y1(generic T: type) -> type; +} + +// This uses the generic binding `T` to form symbolic instructions +// inside the `where` expression. It also contains `.Self`. We don't +// propagate `.Self` dependencies in the `where` expression up to the +// impl's eval block, but we do need to propagate this symbolic call +// to `T.Y1`. +//@dump-sem-ir-begin +impl forall [T: Y] T as Z where .Z1 = T.Y1(.Self) {} +//@dump-sem-ir-end + +impl () as Y { + eval fn Y1(generic _: type) -> type { + return Self; + } +} +fn F() { + () as (Z where .Z1 = ()); +} // CHECK:STDOUT: --- period_self_param.carbon // CHECK:STDOUT: @@ -1117,3 +1143,172 @@ impl forall [T: type] T as Y(Z where .Z1 = ()) where .Y1 = .YF() {} // CHECK:STDOUT: %T.as_type.loc12_54.1 => constants.%T.as_type // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- period_self_in_function_generic_argument.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: type: type = facet_type [concrete] +// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete] +// CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z [concrete] +// CHECK:STDOUT: %assoc0.3fa: %Z.assoc_type = assoc_entity element0, @Z.WithSelf.%Z1 [concrete] +// CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete] +// CHECK:STDOUT: %.Self.frozen.e58: type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y [concrete] +// CHECK:STDOUT: %assoc0.3d6: %Y.assoc_type = assoc_entity element0, @Y.WithSelf.%Y.WithSelf.Y1.decl [concrete] +// CHECK:STDOUT: %pattern_type.cfb: type = pattern_type %Y.type [concrete] +// CHECK:STDOUT: %T.patt.dc7: %pattern_type.cfb = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.95b: %Y.type = symbolic_binding T, 0 [symbolic] +// CHECK:STDOUT: %T.as_type.917: type = facet_access_type %T.95b [symbolic] +// 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: %.db1: = impl_self_witness %.Self.frozen.7b7, @Z [symbolic_self] +// CHECK:STDOUT: %impl.elem0.e1c: type = impl_witness_access %.db1, element0 [symbolic_self] +// CHECK:STDOUT: %Y.WithSelf.Y1.type.27a: type = fn_type @Y.WithSelf.Y1, @Y.WithSelf(%T.95b) [symbolic] +// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %T.95b, @Y [symbolic] +// CHECK:STDOUT: %.604: type = fn_type_with_self_type %Y.WithSelf.Y1.type.27a, %T.95b [symbolic] +// CHECK:STDOUT: %impl.elem0.aed: %.604 = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic] +// CHECK:STDOUT: %specific_impl_fn.4bf: = specific_impl_function %impl.elem0.aed, @Y.WithSelf.Y1(%T.95b, %.Self.frozen.as_type) [symbolic] +// CHECK:STDOUT: %Y.WithSelf.Y1.call.f9a: init type = call %specific_impl_fn.4bf() [template] +// CHECK:STDOUT: %.Self: %Z.type = symbolic_binding .Self [symbolic_self] +// CHECK:STDOUT: %.513: = impl_self_witness %.Self, @Z [symbolic_self] +// CHECK:STDOUT: %impl.elem0.ff0: type = impl_witness_access %.513, element0 [symbolic_self] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic_self] +// CHECK:STDOUT: %specific_impl_fn.85a: = specific_impl_function %impl.elem0.aed, @Y.WithSelf.Y1(%T.95b, %.Self.as_type) [symbolic] +// CHECK:STDOUT: %Y.WithSelf.Y1.call.09a: init type = call %specific_impl_fn.85a() [template] +// CHECK:STDOUT: %Z_where.type.75d: type = facet_type <@Z where %impl.elem0.ff0 = %Y.WithSelf.Y1.call.09a> [template] +// CHECK:STDOUT: %.ddc: = impl_self_witness %T.95b, @Z [symbolic] +// CHECK:STDOUT: %specific_impl_fn.bac: = specific_impl_function %impl.elem0.aed, @Y.WithSelf.Y1(%T.95b, %T.as_type.917):identified [symbolic] +// CHECK:STDOUT: %Z.impl_witness.179: = impl_witness @T.as_type.as.Z.impl.%Z.impl_witness_table, @T.as_type.as.Z.impl(%T.95b) [symbolic] +// CHECK:STDOUT: %specific_impl_fn.d3c: = specific_impl_function %impl.elem0.aed, @Y.WithSelf.Y1(%T.95b, %T.as_type.917) [symbolic] +// CHECK:STDOUT: %Y.WithSelf.Y1.call.bea: init type = call %specific_impl_fn.d3c() [template] +// CHECK:STDOUT: %Y.impl_witness: = impl_witness @empty_tuple.type.as.Y.impl.%Y.impl_witness_table [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Y.impl.Y1.type: type = fn_type @empty_tuple.type.as.Y.impl.Y1 [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Y.impl.Y1: %empty_tuple.type.as.Y.impl.Y1.type = struct_value () [concrete] +// CHECK:STDOUT: %Y.facet: %Y.type = facet_value %empty_tuple.type, (%Y.impl_witness) [concrete] +// CHECK:STDOUT: %Y.WithSelf.Y1.type.67a: type = fn_type @Y.WithSelf.Y1, @Y.WithSelf(%Y.facet) [concrete] +// CHECK:STDOUT: %.0ff: type = fn_type_with_self_type %Y.WithSelf.Y1.type.67a, %Y.facet [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Y.impl.Y1.specific_fn.700: = specific_function %empty_tuple.type.as.Y.impl.Y1, @empty_tuple.type.as.Y.impl.Y1(%.Self.as_type) [symbolic_self] +// CHECK:STDOUT: %empty_tuple.type.as.Y.impl.Y1.call: init type = call %empty_tuple.type.as.Y.impl.Y1.specific_fn.700() [symbolic_self] +// CHECK:STDOUT: %Z_where.type.b3e: type = facet_type <@Z where %impl.elem0.ff0 = %empty_tuple.type.as.Y.impl.Y1.call> [concrete] +// CHECK:STDOUT: %empty_tuple.type.as.Y.impl.Y1.specific_fn.c56: = specific_function %empty_tuple.type.as.Y.impl.Y1, @empty_tuple.type.as.Y.impl.Y1(%empty_tuple.type) [concrete] +// CHECK:STDOUT: %.78e: = impl_self_witness %empty_tuple.type, @Z [concrete] +// CHECK:STDOUT: %Z.impl_witness.a55: = impl_witness @T.as_type.as.Z.impl.%Z.impl_witness_table, @T.as_type.as.Z.impl(%Y.facet) [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: impl_decl @T.as_type.as.Z.impl [concrete] { +// CHECK:STDOUT: %T.patt.loc16_15.1: %pattern_type.cfb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_15.2 (constants.%T.patt.dc7)] +// CHECK:STDOUT: } { +// CHECK:STDOUT: %T.ref.loc16_20: %Y.type = name_ref T, %T.loc16_15.1 [symbolic = %T.loc16_15.2 (constants.%T.95b)] +// CHECK:STDOUT: %T.as_type.loc16_20.1: type = facet_access_type %T.ref.loc16_20 [symbolic = %T.as_type.loc16_20.2 (constants.%T.as_type.917)] +// CHECK:STDOUT: %.loc16_20: type = converted %T.ref.loc16_20, %T.as_type.loc16_20.1 [symbolic = %T.as_type.loc16_20.2 (constants.%T.as_type.917)] +// CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type] +// CHECK:STDOUT: %.Self.frozen.loc16_27: %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.loc16_33: %Z.type = name_ref .Self, %.Self.frozen.loc16_27 [symbolic_self = constants.%.Self.frozen.7b7] +// CHECK:STDOUT: %.Self.as_type.loc16_33: type = facet_access_type %.Self.ref.loc16_33 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc16_33: type = converted %.Self.ref.loc16_33, %.Self.as_type.loc16_33 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %Z1.ref: %Z.assoc_type = name_ref Z1, @Z1.%assoc0 [concrete = constants.%assoc0.3fa] +// CHECK:STDOUT: %impl.elem0.loc16_33.1: type = impl_witness_access constants.%.db1, element0 [symbolic_self = constants.%impl.elem0.e1c] +// CHECK:STDOUT: %T.ref.loc16_39: %Y.type = name_ref T, %T.loc16_15.1 [symbolic = constants.%T.95b] +// CHECK:STDOUT: %T.as_type.loc16_40: type = facet_access_type %T.ref.loc16_39 [symbolic = constants.%T.as_type.917] +// CHECK:STDOUT: %.loc16_40: type = converted %T.ref.loc16_39, %T.as_type.loc16_40 [symbolic = constants.%T.as_type.917] +// CHECK:STDOUT: %Y1.ref: %Y.assoc_type = name_ref Y1, @Y.WithSelf.%assoc0 [concrete = constants.%assoc0.3d6] +// CHECK:STDOUT: %impl.elem0.loc16_40: %.604 = impl_witness_access constants.%Y.lookup_impl_witness, element0 [symbolic = constants.%impl.elem0.aed] +// CHECK:STDOUT: %.Self.ref.loc16_44: %Z.type = name_ref .Self, %.Self.frozen.loc16_27 [symbolic_self = constants.%.Self.frozen.7b7] +// CHECK:STDOUT: %.Self.as_type.loc16_49: type = facet_access_type %.Self.ref.loc16_44 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc16_49.1: type = converted %.Self.ref.loc16_44, %.Self.as_type.loc16_49 [symbolic_self = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %specific_impl_fn.loc16_40.1: = specific_impl_function %impl.elem0.loc16_40, @Y.WithSelf.Y1(constants.%T.95b, constants.%.Self.frozen.as_type) [symbolic = constants.%specific_impl_fn.4bf] +// CHECK:STDOUT: %Y.WithSelf.Y1.call.loc16_49.1: init type = call %specific_impl_fn.loc16_40.1() [template = constants.%Y.WithSelf.Y1.call.f9a] +// CHECK:STDOUT: %.loc16_49.2: type = value_of_initializer %Y.WithSelf.Y1.call.loc16_49.1 [template = constants.%Y.WithSelf.Y1.call.f9a] +// CHECK:STDOUT: %.loc16_49.3: type = converted %Y.WithSelf.Y1.call.loc16_49.1, %.loc16_49.2 [template = constants.%Y.WithSelf.Y1.call.f9a] +// CHECK:STDOUT: %rewrite.loc16_37.1 = requirement_rewrite %impl.elem0.loc16_33.1, %.loc16_49.3 [concrete] +// CHECK:STDOUT: %impl.elem0.loc16_33.2: type = impl_witness_access constants.%.513, element0 [symbolic_self = constants.%impl.elem0.ff0] +// CHECK:STDOUT: %specific_impl_fn.loc16_40.2: = specific_impl_function %impl.elem0.loc16_40, @Y.WithSelf.Y1(constants.%T.95b, constants.%.Self.as_type) [symbolic = constants.%specific_impl_fn.85a] +// CHECK:STDOUT: %Y.WithSelf.Y1.call.loc16_49.2: init type = call %specific_impl_fn.loc16_40.2() [template = constants.%Y.WithSelf.Y1.call.09a] +// CHECK:STDOUT: %.loc16_49.4: type = value_of_initializer %Y.WithSelf.Y1.call.loc16_49.2 [template = constants.%Y.WithSelf.Y1.call.09a] +// CHECK:STDOUT: %.loc16_49.5: type = converted %Y.WithSelf.Y1.call.loc16_49.1, %.loc16_49.4 [template = constants.%Y.WithSelf.Y1.call.09a] +// CHECK:STDOUT: %rewrite.loc16_37.2 = requirement_rewrite %impl.elem0.loc16_33.2, %.loc16_49.5 [concrete] +// CHECK:STDOUT: %.loc16_27.1: type = where_expr [template = %Z_where.type (constants.%Z_where.type.75d)] { +// CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.ref [concrete] +// CHECK:STDOUT: %rewrite.loc16_37.2 = requirement_rewrite %impl.elem0.loc16_33.2, %.loc16_49.5 [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: %.loc16_17: type = splice_block %Y.ref [concrete = constants.%Y.type] { +// CHECK:STDOUT: %.Self.frozen.loc16_15: type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.e58] +// CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %T.loc16_15.1: %Y.type = symbolic_binding T, 0 [symbolic = %T.loc16_15.2 (constants.%T.95b)] +// CHECK:STDOUT: } +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function constants.%impl.elem0.aed, @Y.WithSelf.Y1(constants.%T.95b, constants.%T.as_type.917):identified [symbolic = @T.as_type.as.Z.impl.%specific_impl_fn.loc16_27.2 (constants.%specific_impl_fn.bac)] +// CHECK:STDOUT: %.loc16: = impl_self_witness @T.as_type.as.Z.impl.%.loc16_20, @Z [symbolic = @T.as_type.as.Z.impl.%.loc16_51 (constants.%.ddc)] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: generic impl @T.as_type.as.Z.impl(%T.loc16_15.1: %Y.type) { +// CHECK:STDOUT: %T.patt.loc16_15.2: %pattern_type.cfb = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_15.2 (constants.%T.patt.dc7)] +// CHECK:STDOUT: %T.loc16_15.2: %Y.type = symbolic_binding T, 0 [symbolic = %T.loc16_15.2 (constants.%T.95b)] +// CHECK:STDOUT: %T.as_type.loc16_20.2: type = facet_access_type %T.loc16_15.2 [symbolic = %T.as_type.loc16_20.2 (constants.%T.as_type.917)] +// CHECK:STDOUT: %Y.WithSelf.Y1.type: type = fn_type @Y.WithSelf.Y1, @Y.WithSelf(%T.loc16_15.2) [symbolic = %Y.WithSelf.Y1.type (constants.%Y.WithSelf.Y1.type.27a)] +// CHECK:STDOUT: %.loc16_27.2: type = fn_type_with_self_type %Y.WithSelf.Y1.type, %T.loc16_15.2 [symbolic = %.loc16_27.2 (constants.%.604)] +// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %T.loc16_15.2, @Y [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness)] +// CHECK:STDOUT: %impl.elem0.loc16_27: @T.as_type.as.Z.impl.%.loc16_27.2 (%.604) = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_27 (constants.%impl.elem0.aed)] +// CHECK:STDOUT: %specific_impl_fn.loc16_27.1: = specific_impl_function %impl.elem0.loc16_27, @Y.WithSelf.Y1(%T.loc16_15.2, constants.%.Self.as_type) [symbolic = %specific_impl_fn.loc16_27.1 (constants.%specific_impl_fn.85a)] +// CHECK:STDOUT: %Y.WithSelf.Y1.call.loc16_27: init type = call %specific_impl_fn.loc16_27.1() [template = %Y.WithSelf.Y1.call.loc16_27 (constants.%Y.WithSelf.Y1.call.09a)] +// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z where constants.%impl.elem0.ff0 = %Y.WithSelf.Y1.call.loc16_27> [template = %Z_where.type (constants.%Z_where.type.75d)] +// CHECK:STDOUT: %specific_impl_fn.loc16_27.2: = specific_impl_function %impl.elem0.loc16_27, @Y.WithSelf.Y1(%T.loc16_15.2, %T.as_type.loc16_20.2):identified [symbolic = %specific_impl_fn.loc16_27.2 (constants.%specific_impl_fn.bac)] +// CHECK:STDOUT: %.loc16_51: = impl_self_witness %T.loc16_15.2, @Z [symbolic = %.loc16_51 (constants.%.ddc)] +// CHECK:STDOUT: %Z.impl_witness.loc16_51.2: = impl_witness %Z.impl_witness_table, @T.as_type.as.Z.impl(%T.loc16_15.2) [symbolic = %Z.impl_witness.loc16_51.2 (constants.%Z.impl_witness.179)] +// CHECK:STDOUT: %specific_impl_fn.loc16_51.2: = specific_impl_function %impl.elem0.loc16_27, @Y.WithSelf.Y1(%T.loc16_15.2, %T.as_type.loc16_20.2) [symbolic = %specific_impl_fn.loc16_51.2 (constants.%specific_impl_fn.d3c)] +// CHECK:STDOUT: %Y.WithSelf.Y1.call.loc16_51: init type = call %specific_impl_fn.loc16_51.2() [template = %Y.WithSelf.Y1.call.loc16_51 (constants.%Y.WithSelf.Y1.call.bea)] +// CHECK:STDOUT: +// CHECK:STDOUT: !definition: +// CHECK:STDOUT: +// CHECK:STDOUT: impl: %.loc16_20 as %Z.ref { +// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as_type.as.Z.impl [concrete] +// CHECK:STDOUT: %Z.impl_witness.loc16_51.1: = impl_witness %Z.impl_witness_table, @T.as_type.as.Z.impl(constants.%T.95b) [symbolic = %Z.impl_witness.loc16_51.2 (constants.%Z.impl_witness.179)] +// CHECK:STDOUT: %specific_impl_fn.loc16_51.1: = specific_impl_function constants.%impl.elem0.aed, @Y.WithSelf.Y1(constants.%T.95b, constants.%T.as_type.917) [symbolic = %specific_impl_fn.loc16_51.2 (constants.%specific_impl_fn.d3c)] +// CHECK:STDOUT: %impl_witness_assoc_constant: init type = impl_witness_assoc_constant constants.%Y.WithSelf.Y1.call.bea [template = %Y.WithSelf.Y1.call.loc16_51 (constants.%Y.WithSelf.Y1.call.bea)] +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: extend %Z.ref +// CHECK:STDOUT: witness = %Z.impl_witness.loc16_51.1 +// CHECK:STDOUT: } +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: specific @T.as_type.as.Z.impl(constants.%T.95b) { +// CHECK:STDOUT: %T.patt.loc16_15.2 => constants.%T.patt.dc7 +// CHECK:STDOUT: %T.loc16_15.2 => constants.%T.95b +// CHECK:STDOUT: %T.as_type.loc16_20.2 => constants.%T.as_type.917 +// CHECK:STDOUT: %Y.WithSelf.Y1.type => constants.%Y.WithSelf.Y1.type.27a +// CHECK:STDOUT: %.loc16_27.2 => constants.%.604 +// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness +// CHECK:STDOUT: %impl.elem0.loc16_27 => constants.%impl.elem0.aed +// CHECK:STDOUT: %specific_impl_fn.loc16_27.1 => constants.%specific_impl_fn.85a +// CHECK:STDOUT: %Y.WithSelf.Y1.call.loc16_27 => constants.%Y.WithSelf.Y1.call.09a +// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.75d +// CHECK:STDOUT: %specific_impl_fn.loc16_27.2 => constants.%specific_impl_fn.bac +// CHECK:STDOUT: %.loc16_51 => constants.%.ddc +// CHECK:STDOUT: %Z.impl_witness.loc16_51.2 => constants.%Z.impl_witness.179 +// CHECK:STDOUT: %specific_impl_fn.loc16_51.2 => constants.%specific_impl_fn.d3c +// CHECK:STDOUT: %Y.WithSelf.Y1.call.loc16_51 => constants.%Y.WithSelf.Y1.call.bea +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: specific @T.as_type.as.Z.impl(constants.%Y.facet) { +// CHECK:STDOUT: %T.patt.loc16_15.2 => constants.%T.patt.dc7 +// CHECK:STDOUT: %T.loc16_15.2 => constants.%Y.facet +// CHECK:STDOUT: %T.as_type.loc16_20.2 => constants.%empty_tuple.type +// CHECK:STDOUT: %Y.WithSelf.Y1.type => constants.%Y.WithSelf.Y1.type.67a +// CHECK:STDOUT: %.loc16_27.2 => constants.%.0ff +// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.impl_witness +// CHECK:STDOUT: %impl.elem0.loc16_27 => constants.%empty_tuple.type.as.Y.impl.Y1 +// CHECK:STDOUT: %specific_impl_fn.loc16_27.1 => constants.%empty_tuple.type.as.Y.impl.Y1.specific_fn.700 +// CHECK:STDOUT: %Y.WithSelf.Y1.call.loc16_27 => constants.%empty_tuple.type.as.Y.impl.Y1.call +// CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.b3e +// CHECK:STDOUT: %specific_impl_fn.loc16_27.2 => constants.%empty_tuple.type.as.Y.impl.Y1.specific_fn.c56 +// CHECK:STDOUT: %.loc16_51 => constants.%.78e +// CHECK:STDOUT: %Z.impl_witness.loc16_51.2 => constants.%Z.impl_witness.a55 +// CHECK:STDOUT: %specific_impl_fn.loc16_51.2 => constants.%empty_tuple.type.as.Y.impl.Y1.specific_fn.c56 +// CHECK:STDOUT: %Y.WithSelf.Y1.call.loc16_51 => constants.%empty_tuple.type +// CHECK:STDOUT: +// CHECK:STDOUT: !definition: +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/for/actual.carbon b/toolchain/check/testdata/for/actual.carbon index ab7566ed4c7b..c2729525d635 100644 --- a/toolchain/check/testdata/for/actual.carbon +++ b/toolchain/check/testdata/for/actual.carbon @@ -319,16 +319,13 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: generic impl @IntRange.as.Iterate.impl(@IntRange.%N.loc4_17.2: Core.IntLiteral) { // CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %IntRange: type = class_type @IntRange, @IntRange(%N) [symbolic = %IntRange (constants.%IntRange.0bb)] -// CHECK:STDOUT: %Int.loc9_54.1: type = class_type @Int, @Int(%N) [symbolic = %Int.loc9_54.1 (constants.%Int.d4bbe0.1)] -// CHECK:STDOUT: %SubobjectDestroy.lookup_impl_witness: = lookup_impl_witness %Int.loc9_54.1, @SubobjectDestroy [symbolic = %SubobjectDestroy.lookup_impl_witness (constants.%SubobjectDestroy.lookup_impl_witness.f5e)] -// CHECK:STDOUT: %SubobjectDestroy.facet: %SubobjectDestroy.type = facet_value %Int.loc9_54.1, (%SubobjectDestroy.lookup_impl_witness) [symbolic = %SubobjectDestroy.facet (constants.%SubobjectDestroy.facet.cbf)] -// CHECK:STDOUT: %.loc9_54.1: require_specific_def_type = require_specific_def @T.as_type.as.DestroyImpl.impl(%SubobjectDestroy.facet) [symbolic = %.loc9_54.1 (constants.%.811)] -// CHECK:STDOUT: %DestroyImpl.lookup_impl_witness: = lookup_impl_witness %Int.loc9_54.1, @DestroyImpl [symbolic = %DestroyImpl.lookup_impl_witness (constants.%DestroyImpl.lookup_impl_witness.79f)] -// CHECK:STDOUT: %Destroy.facet.loc9_54.1: %Destroy.type = facet_value %Int.loc9_54.1, (%SubobjectDestroy.lookup_impl_witness, %DestroyImpl.lookup_impl_witness) [symbolic = %Destroy.facet.loc9_54.1 (constants.%Destroy.facet.0e1)] -// CHECK:STDOUT: %.loc9_85.1: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.loc9_85.1 (constants.%.cbd)] -// CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %Int.loc9_54.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.923)] -// CHECK:STDOUT: %facet_value.loc9_85.1: %facet_type.bd0 = facet_value %Int.loc9_54.1, (%SubobjectDestroy.lookup_impl_witness, %DestroyImpl.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.af2 = %Destroy.facet.loc9_54.1 and constants.%impl.elem0.685 = %facet_value.loc9_85.1> [symbolic = %Iterate_where.type (constants.%Iterate_where.type.4d1)] +// CHECK:STDOUT: %Int.loc9_24: type = class_type @Int, @Int(%N) [symbolic = %Int.loc9_24 (constants.%Int.d4bbe0.1)] +// CHECK:STDOUT: %SubobjectDestroy.lookup_impl_witness: = lookup_impl_witness %Int.loc9_24, @SubobjectDestroy [symbolic = %SubobjectDestroy.lookup_impl_witness (constants.%SubobjectDestroy.lookup_impl_witness.f5e)] +// CHECK:STDOUT: %DestroyImpl.lookup_impl_witness: = lookup_impl_witness %Int.loc9_24, @DestroyImpl [symbolic = %DestroyImpl.lookup_impl_witness (constants.%DestroyImpl.lookup_impl_witness.79f)] +// CHECK:STDOUT: %Destroy.facet.loc9_24: %Destroy.type = facet_value %Int.loc9_24, (%SubobjectDestroy.lookup_impl_witness, %DestroyImpl.lookup_impl_witness) [symbolic = %Destroy.facet.loc9_24 (constants.%Destroy.facet.0e1)] +// CHECK:STDOUT: %Copy.lookup_impl_witness: = lookup_impl_witness %Int.loc9_24, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.923)] +// CHECK:STDOUT: %facet_value.loc9_24: %facet_type.bd0 = facet_value %Int.loc9_24, (%SubobjectDestroy.lookup_impl_witness, %DestroyImpl.lookup_impl_witness, %Copy.lookup_impl_witness) [symbolic = %facet_value.loc9_24 (constants.%facet_value)] +// CHECK:STDOUT: %Iterate_where.type: type = facet_type <@Iterate where constants.%impl.elem1.af2 = %Destroy.facet.loc9_24 and constants.%impl.elem0.685 = %facet_value.loc9_24> [symbolic = %Iterate_where.type (constants.%Iterate_where.type.4d1)] // CHECK:STDOUT: %.loc9_87: = impl_self_witness %IntRange, @Iterate [symbolic = %.loc9_87 (constants.%.712)] // 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: @@ -399,8 +396,8 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: } // CHECK:STDOUT: %Iterate.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant.loc9_87.1, %impl_witness_assoc_constant.loc9_87.2, %IntRange.as.Iterate.impl.NewCursor.decl, %IntRange.as.Iterate.impl.Next.decl), @IntRange.as.Iterate.impl [concrete] // CHECK:STDOUT: %Iterate.impl_witness.loc9_87.1: = impl_witness %Iterate.impl_witness_table, @IntRange.as.Iterate.impl(constants.%N) [symbolic = %Iterate.impl_witness.loc9_87.2 (constants.%Iterate.impl_witness)] -// CHECK:STDOUT: %impl_witness_assoc_constant.loc9_87.1: %facet_type.bd0 = impl_witness_assoc_constant constants.%facet_value [symbolic = %facet_value.loc9_85.1 (constants.%facet_value)] -// CHECK:STDOUT: %impl_witness_assoc_constant.loc9_87.2: %Destroy.type = impl_witness_assoc_constant constants.%Destroy.facet.0e1 [symbolic = %Destroy.facet.loc9_54.1 (constants.%Destroy.facet.0e1)] +// CHECK:STDOUT: %impl_witness_assoc_constant.loc9_87.1: %facet_type.bd0 = impl_witness_assoc_constant constants.%facet_value [symbolic = %facet_value.loc9_24 (constants.%facet_value)] +// CHECK:STDOUT: %impl_witness_assoc_constant.loc9_87.2: %Destroy.type = impl_witness_assoc_constant constants.%Destroy.facet.0e1 [symbolic = %Destroy.facet.loc9_24 (constants.%Destroy.facet.0e1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .N = @@ -471,12 +468,12 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %impl.elem1.loc9_30.1: %Destroy.type = impl_witness_access constants.%.052, element1 [symbolic_self = constants.%impl.elem1.d2c] // 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: %.loc9_53: Core.IntLiteral = specific_constant @IntRange.%N.loc4_17.2, @IntRange(constants.%N) [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %N.ref.loc9_53: Core.IntLiteral = name_ref N, %.loc9_53 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc9_54.2: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_54.1 (constants.%Int.d4bbe0.1)] -// CHECK:STDOUT: %Destroy.facet.loc9_54.2: %Destroy.type = facet_value %Int.loc9_54.2, (constants.%SubobjectDestroy.lookup_impl_witness.f5e, constants.%DestroyImpl.lookup_impl_witness.79f) [symbolic = %Destroy.facet.loc9_54.1 (constants.%Destroy.facet.0e1)] -// CHECK:STDOUT: %.loc9_54.2: %Destroy.type = converted %Int.loc9_54.2, %Destroy.facet.loc9_54.2 [symbolic = %Destroy.facet.loc9_54.1 (constants.%Destroy.facet.0e1)] -// CHECK:STDOUT: %rewrite.loc9_42.1 = requirement_rewrite %impl.elem1.loc9_30.1, %.loc9_54.2 [concrete] +// CHECK:STDOUT: %.loc9_53: Core.IntLiteral = specific_constant @IntRange.%N.loc4_17.2, @IntRange(constants.%N) [symbolic = constants.%N] +// CHECK:STDOUT: %N.ref.loc9_53: Core.IntLiteral = name_ref N, %.loc9_53 [symbolic = constants.%N] +// CHECK:STDOUT: %Int.loc9_54: type = class_type @Int, @Int(constants.%N) [symbolic = constants.%Int.d4bbe0.1] +// CHECK:STDOUT: %Destroy.facet.loc9_54: %Destroy.type = facet_value %Int.loc9_54, (constants.%SubobjectDestroy.lookup_impl_witness.f5e, constants.%DestroyImpl.lookup_impl_witness.79f) [symbolic = constants.%Destroy.facet.0e1] +// CHECK:STDOUT: %.loc9_54: %Destroy.type = converted %Int.loc9_54, %Destroy.facet.loc9_54 [symbolic = constants.%Destroy.facet.0e1] +// 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] @@ -484,20 +481,20 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: %impl.elem0.loc9_60.1: %facet_type.bd0 = impl_witness_access constants.%.052, element0 [symbolic_self = constants.%impl.elem0.a07] // 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: %.loc9_84: Core.IntLiteral = specific_constant @IntRange.%N.loc4_17.2, @IntRange(constants.%N) [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %N.ref.loc9_84: Core.IntLiteral = name_ref N, %.loc9_84 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %Int.loc9_85: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc9_54.1 (constants.%Int.d4bbe0.1)] -// CHECK:STDOUT: %facet_value.loc9_85.2: %facet_type.bd0 = facet_value %Int.loc9_85, (constants.%SubobjectDestroy.lookup_impl_witness.f5e, constants.%DestroyImpl.lookup_impl_witness.79f, constants.%Copy.lookup_impl_witness.923) [symbolic = %facet_value.loc9_85.1 (constants.%facet_value)] -// CHECK:STDOUT: %.loc9_85.2: %facet_type.bd0 = 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: %.loc9_84: Core.IntLiteral = specific_constant @IntRange.%N.loc4_17.2, @IntRange(constants.%N) [symbolic = constants.%N] +// CHECK:STDOUT: %N.ref.loc9_84: Core.IntLiteral = name_ref N, %.loc9_84 [symbolic = constants.%N] +// CHECK:STDOUT: %Int.loc9_85: type = class_type @Int, @Int(constants.%N) [symbolic = constants.%Int.d4bbe0.1] +// CHECK:STDOUT: %facet_value.loc9_85: %facet_type.bd0 = facet_value %Int.loc9_85, (constants.%SubobjectDestroy.lookup_impl_witness.f5e, constants.%DestroyImpl.lookup_impl_witness.79f, constants.%Copy.lookup_impl_witness.923) [symbolic = constants.%facet_value] +// CHECK:STDOUT: %.loc9_85: %facet_type.bd0 = converted %Int.loc9_85, %facet_value.loc9_85 [symbolic = constants.%facet_value] +// CHECK:STDOUT: %rewrite.loc9_73.1 = requirement_rewrite %impl.elem0.loc9_60.1, %.loc9_85 [concrete] // CHECK:STDOUT: %impl.elem1.loc9_30.2: %Destroy.type = impl_witness_access constants.%.327, element1 [symbolic_self = constants.%impl.elem1.af2] -// CHECK:STDOUT: %rewrite.loc9_42.2 = requirement_rewrite %impl.elem1.loc9_30.2, %.loc9_54.2 [concrete] +// 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.bd0 = impl_witness_access constants.%.327, element0 [symbolic_self = constants.%impl.elem0.685] -// CHECK:STDOUT: %rewrite.loc9_73.2 = requirement_rewrite %impl.elem0.loc9_60.2, %.loc9_85.2 [concrete] +// CHECK:STDOUT: %rewrite.loc9_73.2 = requirement_rewrite %impl.elem0.loc9_60.2, %.loc9_85 [concrete] // CHECK:STDOUT: %.loc9_24: type = where_expr [symbolic = %Iterate_where.type (constants.%Iterate_where.type.4d1)] { // 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.2 [concrete] -// CHECK:STDOUT: %rewrite.loc9_73.2 = requirement_rewrite %impl.elem0.loc9_60.2, %.loc9_85.2 [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 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %.loc9: = impl_self_witness @IntRange.as.Iterate.impl.%Self.ref, @Iterate [symbolic = @IntRange.as.Iterate.impl.%.loc9_87 (constants.%.712)] @@ -859,15 +856,12 @@ fn Read(generic y: Core.IntLiteral) { // CHECK:STDOUT: specific @IntRange.as.Iterate.impl(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %IntRange => constants.%IntRange.0bb -// CHECK:STDOUT: %Int.loc9_54.1 => constants.%Int.d4bbe0.1 +// CHECK:STDOUT: %Int.loc9_24 => constants.%Int.d4bbe0.1 // CHECK:STDOUT: %SubobjectDestroy.lookup_impl_witness => constants.%SubobjectDestroy.lookup_impl_witness.f5e -// CHECK:STDOUT: %SubobjectDestroy.facet => constants.%SubobjectDestroy.facet.cbf -// CHECK:STDOUT: %.loc9_54.1 => constants.%.811 // CHECK:STDOUT: %DestroyImpl.lookup_impl_witness => constants.%DestroyImpl.lookup_impl_witness.79f -// CHECK:STDOUT: %Destroy.facet.loc9_54.1 => constants.%Destroy.facet.0e1 -// CHECK:STDOUT: %.loc9_85.1 => constants.%.cbd +// CHECK:STDOUT: %Destroy.facet.loc9_24 => constants.%Destroy.facet.0e1 // CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.923 -// CHECK:STDOUT: %facet_value.loc9_85.1 => constants.%facet_value +// CHECK:STDOUT: %facet_value.loc9_24 => constants.%facet_value // CHECK:STDOUT: %Iterate_where.type => constants.%Iterate_where.type.4d1 // CHECK:STDOUT: %.loc9_87 => constants.%.712 // CHECK:STDOUT: %Iterate.impl_witness.loc9_87.2 => constants.%Iterate.impl_witness diff --git a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon index b5ad8ce11c51..f95d58c19f0b 100644 --- a/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon +++ b/toolchain/check/testdata/generic/dot_self_symbolic_type.carbon @@ -87,7 +87,6 @@ fn H(generic T: type) { // CHECK:STDOUT: %.Self.frozen.b15: %A.type.fa003b.2 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %A.assoc_type.3230b8.2: type = assoc_entity_type @A, @A(%CC) [symbolic] // CHECK:STDOUT: %assoc0.4c905d.2: %A.assoc_type.3230b8.2 = assoc_entity element0, @A.WithSelf.%X [symbolic] -// CHECK:STDOUT: %require_complete.792: = require_complete_type %A.type.fa003b.2 [symbolic] // CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.b15 [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness.030: = lookup_impl_witness %.Self.frozen.b15, @A, @A(%CC) [symbolic] // CHECK:STDOUT: %impl.elem0.fba: type = impl_witness_access %A.lookup_impl_witness.030, element0 [symbolic] @@ -140,20 +139,20 @@ fn H(generic T: type) { // CHECK:STDOUT: %A.type.loc11_30.2: type = facet_type <@A, @A(constants.%CC)> [symbolic = %A.type.loc11_30.1 (constants.%A.type.fa003b.2)] // CHECK:STDOUT: %.Self.frozen.loc11_32.2: @C.F.%A.type.loc11_30.1 (%A.type.fa003b.2) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_32.1 (constants.%.Self.frozen.b15)] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.type.loc11_30.2 [concrete] -// CHECK:STDOUT: %.Self.ref: @C.F.%A.type.loc11_30.1 (%A.type.fa003b.2) = name_ref .Self, %.Self.frozen.loc11_32.2 [symbolic = %.Self.frozen.loc11_32.1 (constants.%.Self.frozen.b15)] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] -// CHECK:STDOUT: %.loc11_38.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] -// CHECK:STDOUT: %.loc11_38.2: @C.F.%A.assoc_type (%A.assoc_type.3230b8.2) = specific_constant @X.%assoc0, @A.WithSelf(constants.%CC, constants.%.Self.frozen.b15) [symbolic = %assoc0 (constants.%assoc0.4c905d.2)] -// CHECK:STDOUT: %X.ref: @C.F.%A.assoc_type (%A.assoc_type.3230b8.2) = name_ref X, %.loc11_38.2 [symbolic = %assoc0 (constants.%assoc0.4c905d.2)] -// CHECK:STDOUT: %impl.elem0.loc11_38.3: type = impl_witness_access constants.%A.lookup_impl_witness.030, element0 [symbolic = %impl.elem0.loc11_38.1 (constants.%impl.elem0.fba)] -// CHECK:STDOUT: %.loc11_43: type = specific_constant @C.%CC.loc6_11.2, @C(constants.%CC) [symbolic = %CC (constants.%CC)] -// CHECK:STDOUT: %CC.ref.loc11_43: type = name_ref CC, %.loc11_43 [symbolic = %CC (constants.%CC)] -// CHECK:STDOUT: %rewrite.loc11_41.1 = requirement_rewrite %impl.elem0.loc11_38.3, %CC.ref.loc11_43 [concrete] -// CHECK:STDOUT: %impl.elem0.loc11_38.4: type = impl_witness_access constants.%A.lookup_impl_witness.9e772d.1, element0 [symbolic = %impl.elem0.loc11_38.2 (constants.%impl.elem0.7f79de.1)] -// CHECK:STDOUT: %rewrite.loc11_41.2 = requirement_rewrite %impl.elem0.loc11_38.4, %CC.ref.loc11_43 [concrete] +// CHECK:STDOUT: %.Self.ref: %A.type.fa003b.2 = name_ref .Self, %.Self.frozen.loc11_32.2 [symbolic = constants.%.Self.frozen.b15] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_38.1: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_38.2: %A.assoc_type.3230b8.2 = specific_constant @X.%assoc0, @A.WithSelf(constants.%CC, constants.%.Self.frozen.b15) [symbolic = constants.%assoc0.4c905d.2] +// CHECK:STDOUT: %X.ref: %A.assoc_type.3230b8.2 = name_ref X, %.loc11_38.2 [symbolic = constants.%assoc0.4c905d.2] +// CHECK:STDOUT: %impl.elem0.loc11_38.1: type = impl_witness_access constants.%A.lookup_impl_witness.030, element0 [symbolic = constants.%impl.elem0.fba] +// CHECK:STDOUT: %.loc11_43: type = specific_constant @C.%CC.loc6_11.2, @C(constants.%CC) [symbolic = constants.%CC] +// CHECK:STDOUT: %CC.ref.loc11_43: type = name_ref CC, %.loc11_43 [symbolic = constants.%CC] +// CHECK:STDOUT: %rewrite.loc11_41.1 = requirement_rewrite %impl.elem0.loc11_38.1, %CC.ref.loc11_43 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_38.2: type = impl_witness_access constants.%A.lookup_impl_witness.9e772d.1, element0 [symbolic = constants.%impl.elem0.7f79de.1] +// CHECK:STDOUT: %rewrite.loc11_41.2 = requirement_rewrite %impl.elem0.loc11_38.2, %CC.ref.loc11_43 [concrete] // CHECK:STDOUT: %.loc11_32.2: type = where_expr [symbolic = %A_where.type (constants.%A_where.type.ff151a.1)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.type.loc11_30.2 [concrete] -// CHECK:STDOUT: %rewrite.loc11_41.2 = requirement_rewrite %impl.elem0.loc11_38.4, %CC.ref.loc11_43 [concrete] +// CHECK:STDOUT: %rewrite.loc11_41.2 = requirement_rewrite %impl.elem0.loc11_38.2, %CC.ref.loc11_43 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %T.loc11_24.2: @C.F.%A_where.type (%A_where.type.ff151a.1) = symbolic_binding T, 1 [symbolic = %T.loc11_24.1 (constants.%T.5e2)] @@ -191,16 +190,10 @@ fn H(generic T: type) { // CHECK:STDOUT: %CC: type = symbolic_binding CC, 0 [symbolic = %CC (constants.%CC)] // CHECK:STDOUT: %A.type.loc11_30.1: type = facet_type <@A, @A(%CC)> [symbolic = %A.type.loc11_30.1 (constants.%A.type.fa003b.2)] // CHECK:STDOUT: %.Self.frozen.loc11_32.1: @C.F.%A.type.loc11_30.1 (%A.type.fa003b.2) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_32.1 (constants.%.Self.frozen.b15)] -// CHECK:STDOUT: %require_complete: = require_complete_type %A.type.loc11_30.1 [symbolic = %require_complete (constants.%require_complete.792)] -// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc11_32.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.3230b8.2)] -// CHECK:STDOUT: %assoc0: @C.F.%A.assoc_type (%A.assoc_type.3230b8.2) = assoc_entity element0, @A.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.4c905d.2)] -// CHECK:STDOUT: %A.lookup_impl_witness.loc11_38.1: = lookup_impl_witness %.Self.frozen.loc11_32.1, @A, @A(%CC) [symbolic = %A.lookup_impl_witness.loc11_38.1 (constants.%A.lookup_impl_witness.030)] -// CHECK:STDOUT: %impl.elem0.loc11_38.1: type = impl_witness_access %A.lookup_impl_witness.loc11_38.1, element0 [symbolic = %impl.elem0.loc11_38.1 (constants.%impl.elem0.fba)] // CHECK:STDOUT: %.Self: @C.F.%A.type.loc11_30.1 (%A.type.fa003b.2) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.8ed243.1)] -// CHECK:STDOUT: %A.lookup_impl_witness.loc11_38.2: = lookup_impl_witness %.Self, @A, @A(%CC) [symbolic = %A.lookup_impl_witness.loc11_38.2 (constants.%A.lookup_impl_witness.9e772d.1)] -// CHECK:STDOUT: %impl.elem0.loc11_38.2: type = impl_witness_access %A.lookup_impl_witness.loc11_38.2, element0 [symbolic = %impl.elem0.loc11_38.2 (constants.%impl.elem0.7f79de.1)] -// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%CC) where %impl.elem0.loc11_38.2 = %CC> [symbolic = %A_where.type (constants.%A_where.type.ff151a.1)] +// CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self, @A, @A(%CC) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.9e772d.1)] +// CHECK:STDOUT: %impl.elem0.loc11_32: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_32 (constants.%impl.elem0.7f79de.1)] +// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%CC) where %impl.elem0.loc11_32 = %CC> [symbolic = %A_where.type (constants.%A_where.type.ff151a.1)] // CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type [symbolic = %pattern_type (constants.%pattern_type.957)] // CHECK:STDOUT: %T.patt.loc11_24.2: @C.F.%pattern_type (%pattern_type.957) = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc11_24.2 (constants.%T.patt.9e9)] // CHECK:STDOUT: %T.loc11_24.1: @C.F.%A_where.type (%A_where.type.ff151a.1) = symbolic_binding T, 1 [symbolic = %T.loc11_24.1 (constants.%T.5e2)] @@ -249,15 +242,9 @@ fn H(generic T: type) { // CHECK:STDOUT: %CC => constants.%CC // CHECK:STDOUT: %A.type.loc11_30.1 => constants.%A.type.fa003b.2 // CHECK:STDOUT: %.Self.frozen.loc11_32.1 => constants.%.Self.frozen.b15 -// CHECK:STDOUT: %require_complete => constants.%require_complete.792 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type -// CHECK:STDOUT: %A.assoc_type => constants.%A.assoc_type.3230b8.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.4c905d.2 -// CHECK:STDOUT: %A.lookup_impl_witness.loc11_38.1 => constants.%A.lookup_impl_witness.030 -// CHECK:STDOUT: %impl.elem0.loc11_38.1 => constants.%impl.elem0.fba // CHECK:STDOUT: %.Self => constants.%.Self.8ed243.1 -// CHECK:STDOUT: %A.lookup_impl_witness.loc11_38.2 => constants.%A.lookup_impl_witness.9e772d.1 -// CHECK:STDOUT: %impl.elem0.loc11_38.2 => constants.%impl.elem0.7f79de.1 +// CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.lookup_impl_witness.9e772d.1 +// CHECK:STDOUT: %impl.elem0.loc11_32 => constants.%impl.elem0.7f79de.1 // CHECK:STDOUT: %A_where.type => constants.%A_where.type.ff151a.1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.957 // CHECK:STDOUT: %T.patt.loc11_24.2 => constants.%T.patt.9e9 @@ -334,7 +321,6 @@ fn H(generic T: type) { // CHECK:STDOUT: %B.type.d1b: type = generic_interface_type @B [concrete] // CHECK:STDOUT: %B.generic: %B.type.d1b = struct_value () [concrete] // CHECK:STDOUT: %.Self.frozen.b15: %A.type.fa003b.1 = symbolic_binding .Self [symbolic] -// CHECK:STDOUT: %require_complete.792: = require_complete_type %A.type.fa003b.1 [symbolic] // CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.b15 [symbolic] // CHECK:STDOUT: %A.lookup_impl_witness.030: = lookup_impl_witness %.Self.frozen.b15, @A, @A(%AA) [symbolic] // CHECK:STDOUT: %impl.elem0.fba: type = impl_witness_access %A.lookup_impl_witness.030, element0 [symbolic] @@ -399,16 +385,16 @@ fn H(generic T: type) { // CHECK:STDOUT: %A.type.loc9_32.1: type = facet_type <@A, @A(constants.%AA)> [symbolic = %A.type.loc9_32.2 (constants.%A.type.fa003b.1)] // CHECK:STDOUT: %.Self.frozen.loc9_34.1: @BB.as_type.as.B.impl.%A.type.loc9_32.2 (%A.type.fa003b.1) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_34.2 (constants.%.Self.frozen.b15)] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.type.loc9_32.1 [concrete] -// CHECK:STDOUT: %.Self.ref: @BB.as_type.as.B.impl.%A.type.loc9_32.2 (%A.type.fa003b.1) = name_ref .Self, %.Self.frozen.loc9_34.1 [symbolic = %.Self.frozen.loc9_34.2 (constants.%.Self.frozen.b15)] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] -// CHECK:STDOUT: %.loc9_40.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type)] -// CHECK:STDOUT: %.loc9_40.2: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = specific_constant @X.%assoc0, @A.WithSelf(constants.%AA, constants.%.Self.frozen.b15) [symbolic = %assoc0 (constants.%assoc0)] -// CHECK:STDOUT: %X.ref: @BB.as_type.as.B.impl.%A.assoc_type (%A.assoc_type) = name_ref X, %.loc9_40.2 [symbolic = %assoc0 (constants.%assoc0)] -// CHECK:STDOUT: %impl.elem0.loc9_40.1: type = impl_witness_access constants.%A.lookup_impl_witness.030, element0 [symbolic = %impl.elem0.loc9_40.3 (constants.%impl.elem0.fba)] +// CHECK:STDOUT: %.Self.ref: %A.type.fa003b.1 = name_ref .Self, %.Self.frozen.loc9_34.1 [symbolic = constants.%.Self.frozen.b15] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_40.1: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc9_40.2: %A.assoc_type = specific_constant @X.%assoc0, @A.WithSelf(constants.%AA, constants.%.Self.frozen.b15) [symbolic = constants.%assoc0] +// CHECK:STDOUT: %X.ref: %A.assoc_type = name_ref X, %.loc9_40.2 [symbolic = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0.loc9_40.1: type = impl_witness_access constants.%A.lookup_impl_witness.030, element0 [symbolic = constants.%impl.elem0.fba] // CHECK:STDOUT: %.loc9_46.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_46.2: type = converted %.loc9_46.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %rewrite.loc9_43.1 = requirement_rewrite %impl.elem0.loc9_40.1, %.loc9_46.2 [concrete] -// CHECK:STDOUT: %impl.elem0.loc9_40.2: type = impl_witness_access constants.%A.lookup_impl_witness.9e772d.1, element0 [symbolic = %impl.elem0.loc9_40.4 (constants.%impl.elem0.7f79de.1)] +// CHECK:STDOUT: %impl.elem0.loc9_40.2: type = impl_witness_access constants.%A.lookup_impl_witness.9e772d.1, element0 [symbolic = constants.%impl.elem0.7f79de.1] // CHECK:STDOUT: %rewrite.loc9_43.2 = requirement_rewrite %impl.elem0.loc9_40.2, %.loc9_46.2 [concrete] // CHECK:STDOUT: %.loc9_34.2: type = where_expr [symbolic = %A_where.type (constants.%A_where.type.83dbed.1)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %A.type.loc9_32.1 [concrete] @@ -425,16 +411,10 @@ fn H(generic T: type) { // CHECK:STDOUT: %AA.loc9_16.2: type = symbolic_binding AA, 0 [symbolic = %AA.loc9_16.2 (constants.%AA)] // CHECK:STDOUT: %A.type.loc9_32.2: type = facet_type <@A, @A(%AA.loc9_16.2)> [symbolic = %A.type.loc9_32.2 (constants.%A.type.fa003b.1)] // CHECK:STDOUT: %.Self.frozen.loc9_34.2: @BB.as_type.as.B.impl.%A.type.loc9_32.2 (%A.type.fa003b.1) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_34.2 (constants.%.Self.frozen.b15)] -// CHECK:STDOUT: %require_complete.loc9_40: = require_complete_type %A.type.loc9_32.2 [symbolic = %require_complete.loc9_40 (constants.%require_complete.792)] -// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc9_34.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.loc9_40.1: = lookup_impl_witness %.Self.frozen.loc9_34.2, @A, @A(%AA.loc9_16.2) [symbolic = %A.lookup_impl_witness.loc9_40.1 (constants.%A.lookup_impl_witness.030)] -// CHECK:STDOUT: %impl.elem0.loc9_40.3: type = impl_witness_access %A.lookup_impl_witness.loc9_40.1, element0 [symbolic = %impl.elem0.loc9_40.3 (constants.%impl.elem0.fba)] // CHECK:STDOUT: %.Self: @BB.as_type.as.B.impl.%A.type.loc9_32.2 (%A.type.fa003b.1) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.8ed243.1)] -// CHECK:STDOUT: %A.lookup_impl_witness.loc9_40.2: = lookup_impl_witness %.Self, @A, @A(%AA.loc9_16.2) [symbolic = %A.lookup_impl_witness.loc9_40.2 (constants.%A.lookup_impl_witness.9e772d.1)] -// CHECK:STDOUT: %impl.elem0.loc9_40.4: type = impl_witness_access %A.lookup_impl_witness.loc9_40.2, element0 [symbolic = %impl.elem0.loc9_40.4 (constants.%impl.elem0.7f79de.1)] -// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%AA.loc9_16.2) where %impl.elem0.loc9_40.4 = constants.%empty_tuple.type> [symbolic = %A_where.type (constants.%A_where.type.83dbed.1)] +// CHECK:STDOUT: %A.lookup_impl_witness: = lookup_impl_witness %.Self, @A, @A(%AA.loc9_16.2) [symbolic = %A.lookup_impl_witness (constants.%A.lookup_impl_witness.9e772d.1)] +// CHECK:STDOUT: %impl.elem0.loc9_34: type = impl_witness_access %A.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_34 (constants.%impl.elem0.7f79de.1)] +// CHECK:STDOUT: %A_where.type: type = facet_type <@A, @A(%AA.loc9_16.2) where %impl.elem0.loc9_34 = constants.%empty_tuple.type> [symbolic = %A_where.type (constants.%A_where.type.83dbed.1)] // CHECK:STDOUT: %pattern_type: type = pattern_type %A_where.type [symbolic = %pattern_type (constants.%pattern_type.9b5)] // CHECK:STDOUT: %BB.patt.loc9_26.2: @BB.as_type.as.B.impl.%pattern_type (%pattern_type.9b5) = symbolic_binding_pattern BB, 1 [symbolic = %BB.patt.loc9_26.2 (constants.%BB.patt.954)] // CHECK:STDOUT: %BB.loc9_26.2: @BB.as_type.as.B.impl.%A_where.type (%A_where.type.83dbed.1) = symbolic_binding BB, 1 [symbolic = %BB.loc9_26.2 (constants.%BB.a11)] @@ -445,7 +425,7 @@ fn H(generic T: type) { // CHECK:STDOUT: %B.impl_witness.loc9_62.2: = impl_witness %B.impl_witness_table, @BB.as_type.as.B.impl(%AA.loc9_16.2, %BB.loc9_26.2) [symbolic = %B.impl_witness.loc9_62.2 (constants.%B.impl_witness.089)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc9_60: = require_complete_type %B.type.loc9_60.2 [symbolic = %require_complete.loc9_60 (constants.%require_complete.58dcfe.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type %B.type.loc9_60.2 [symbolic = %require_complete (constants.%require_complete.58dcfe.1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %.loc9_49 as %B.type.loc9_60.1 { // CHECK:STDOUT: %B.impl_witness_table = impl_witness_table (), @BB.as_type.as.B.impl [concrete] @@ -505,15 +485,9 @@ fn H(generic T: type) { // CHECK:STDOUT: %AA.loc9_16.2 => constants.%AA // CHECK:STDOUT: %A.type.loc9_32.2 => constants.%A.type.fa003b.1 // CHECK:STDOUT: %.Self.frozen.loc9_34.2 => constants.%.Self.frozen.b15 -// CHECK:STDOUT: %require_complete.loc9_40 => constants.%require_complete.792 -// 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.loc9_40.1 => constants.%A.lookup_impl_witness.030 -// CHECK:STDOUT: %impl.elem0.loc9_40.3 => constants.%impl.elem0.fba // CHECK:STDOUT: %.Self => constants.%.Self.8ed243.1 -// CHECK:STDOUT: %A.lookup_impl_witness.loc9_40.2 => constants.%A.lookup_impl_witness.9e772d.1 -// CHECK:STDOUT: %impl.elem0.loc9_40.4 => constants.%impl.elem0.7f79de.1 +// CHECK:STDOUT: %A.lookup_impl_witness => constants.%A.lookup_impl_witness.9e772d.1 +// CHECK:STDOUT: %impl.elem0.loc9_34 => constants.%impl.elem0.7f79de.1 // CHECK:STDOUT: %A_where.type => constants.%A_where.type.83dbed.1 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.9b5 // CHECK:STDOUT: %BB.patt.loc9_26.2 => constants.%BB.patt.954 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 93306c6eb511..167b48847b41 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 @@ -117,7 +117,6 @@ fn F() { // CHECK:STDOUT: %Y.assoc_type.edf: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %assoc0.05f: %Y.assoc_type.edf = assoc_entity element0, @Y.WithSelf.%T [symbolic] // CHECK:STDOUT: %.Self.frozen.b95: %Y.type.eff = symbolic_binding .Self [symbolic] -// CHECK:STDOUT: %require_complete: = require_complete_type %Y.type.eff [symbolic] // CHECK:STDOUT: %.Self.frozen.as_type.55f: type = facet_access_type %.Self.frozen.b95 [symbolic] // CHECK:STDOUT: %Y.lookup_impl_witness.eba: = lookup_impl_witness %.Self.frozen.b95, @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %impl.elem0.29d: type = impl_witness_access %Y.lookup_impl_witness.eba, element0 [symbolic] @@ -132,7 +131,7 @@ fn F() { // CHECK:STDOUT: %Outer.G.type.c4a: type = fn_type @Outer.G, @Outer(%OuterParam) [symbolic] // CHECK:STDOUT: %Outer.G.5d7: %Outer.G.type.c4a = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %C: type = class_type @C [concrete] // CHECK:STDOUT: %Outer.b30: type = class_type @Outer, @Outer(%empty_tuple.type) [concrete] // CHECK:STDOUT: %Y.type.d7b: type = facet_type <@Y, @Y(%empty_tuple.type)> [concrete] @@ -158,9 +157,6 @@ fn F() { // CHECK:STDOUT: %impl.elem0.b95: type = impl_witness_access %Y.lookup_impl_witness.b19, element0 [symbolic_self] // CHECK:STDOUT: %Y_where.type.6ce: type = facet_type <@Y, @Y(%empty_tuple.type) where %impl.elem0.b95 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %facet_value: %Y_where.type.6ce = facet_value %C, (%Y.impl_witness) [concrete] -// CHECK:STDOUT: %complete_type.2cf: = complete_type_witness %Y.type.d7b [concrete] -// CHECK:STDOUT: %Y.lookup_impl_witness.e35: = lookup_impl_witness %.Self.frozen.62f, @Y, @Y(%empty_tuple.type) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.798: type = impl_witness_access %Y.lookup_impl_witness.e35, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.f97: type = pattern_type %Y_where.type.6ce [concrete] // CHECK:STDOUT: %H.patt.7ee: %pattern_type.f97 = symbolic_binding_pattern H, 1 [symbolic] // CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %Outer.G.371, @Outer.G(%empty_tuple.type, %facet_value) [concrete] @@ -275,25 +271,25 @@ fn F() { // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc54_26 [symbolic = %Y.type (constants.%Y.type.eff)] // CHECK:STDOUT: %.Self.frozen.loc54_28.2: @Outer.G.%Y.type (%Y.type.eff) = symbolic_binding .Self [symbolic = %.Self.frozen.loc54_28.1 (constants.%.Self.frozen.b95)] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] -// CHECK:STDOUT: %.Self.ref: @Outer.G.%Y.type (%Y.type.eff) = name_ref .Self, %.Self.frozen.loc54_28.2 [symbolic = %.Self.frozen.loc54_28.1 (constants.%.Self.frozen.b95)] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.55f)] -// CHECK:STDOUT: %.loc54_34.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.55f)] -// CHECK:STDOUT: %.loc54_34.2: @Outer.G.%Y.assoc_type (%Y.assoc_type.edf) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.b95) [symbolic = %assoc0 (constants.%assoc0.05f)] -// CHECK:STDOUT: %T.ref: @Outer.G.%Y.assoc_type (%Y.assoc_type.edf) = name_ref T, %.loc54_34.2 [symbolic = %assoc0 (constants.%assoc0.05f)] -// CHECK:STDOUT: %impl.elem0.loc54_34.3: type = impl_witness_access constants.%Y.lookup_impl_witness.eba, element0 [symbolic = %impl.elem0.loc54_34.1 (constants.%impl.elem0.29d)] +// CHECK:STDOUT: %.Self.ref: %Y.type.eff = name_ref .Self, %.Self.frozen.loc54_28.2 [symbolic = constants.%.Self.frozen.b95] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.frozen.as_type.55f] +// CHECK:STDOUT: %.loc54_34.1: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.frozen.as_type.55f] +// CHECK:STDOUT: %.loc54_34.2: %Y.assoc_type.edf = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.b95) [symbolic = constants.%assoc0.05f] +// CHECK:STDOUT: %T.ref: %Y.assoc_type.edf = name_ref T, %.loc54_34.2 [symbolic = constants.%assoc0.05f] +// CHECK:STDOUT: %impl.elem0.loc54_34.1: type = impl_witness_access constants.%Y.lookup_impl_witness.eba, element0 [symbolic = constants.%impl.elem0.29d] // CHECK:STDOUT: %.loc54_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc54_40.2: type = converted %.loc54_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %rewrite.loc54_37.1 = requirement_rewrite %impl.elem0.loc54_34.3, %.loc54_40.2 [concrete] -// CHECK:STDOUT: %impl.elem0.loc54_34.4: type = impl_witness_access constants.%Y.lookup_impl_witness.f46, element0 [symbolic = %impl.elem0.loc54_34.2 (constants.%impl.elem0.d7a)] -// CHECK:STDOUT: %rewrite.loc54_37.2 = requirement_rewrite %impl.elem0.loc54_34.4, %.loc54_40.2 [concrete] +// CHECK:STDOUT: %rewrite.loc54_37.1 = requirement_rewrite %impl.elem0.loc54_34.1, %.loc54_40.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc54_34.2: type = impl_witness_access constants.%Y.lookup_impl_witness.f46, element0 [symbolic = constants.%impl.elem0.d7a] +// CHECK:STDOUT: %rewrite.loc54_37.2 = requirement_rewrite %impl.elem0.loc54_34.2, %.loc54_40.2 [concrete] // CHECK:STDOUT: %.loc54_28.2: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.fa0)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] -// CHECK:STDOUT: %rewrite.loc54_37.2 = requirement_rewrite %impl.elem0.loc54_34.4, %.loc54_40.2 [concrete] +// CHECK:STDOUT: %rewrite.loc54_37.2 = requirement_rewrite %impl.elem0.loc54_34.2, %.loc54_40.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %H.loc54_24.2: @Outer.G.%Y_where.type (%Y_where.type.fa0) = symbolic_binding H, 1 [symbolic = %H.loc54_24.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: = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -309,16 +305,10 @@ fn F() { // 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.eff)] // CHECK:STDOUT: %.Self.frozen.loc54_28.1: @Outer.G.%Y.type (%Y.type.eff) = symbolic_binding .Self [symbolic = %.Self.frozen.loc54_28.1 (constants.%.Self.frozen.b95)] -// CHECK:STDOUT: %require_complete: = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc54_28.1 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.55f)] -// CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.edf)] -// CHECK:STDOUT: %assoc0: @Outer.G.%Y.assoc_type (%Y.assoc_type.edf) = assoc_entity element0, @Y.WithSelf.%T [symbolic = %assoc0 (constants.%assoc0.05f)] -// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_34.1: = lookup_impl_witness %.Self.frozen.loc54_28.1, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc54_34.1 (constants.%Y.lookup_impl_witness.eba)] -// CHECK:STDOUT: %impl.elem0.loc54_34.1: type = impl_witness_access %Y.lookup_impl_witness.loc54_34.1, element0 [symbolic = %impl.elem0.loc54_34.1 (constants.%impl.elem0.29d)] // CHECK:STDOUT: %.Self: @Outer.G.%Y.type (%Y.type.eff) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.273)] -// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_34.2: = lookup_impl_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc54_34.2 (constants.%Y.lookup_impl_witness.f46)] -// CHECK:STDOUT: %impl.elem0.loc54_34.2: type = impl_witness_access %Y.lookup_impl_witness.loc54_34.2, element0 [symbolic = %impl.elem0.loc54_34.2 (constants.%impl.elem0.d7a)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc54_34.2 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.fa0)] +// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.f46)] +// CHECK:STDOUT: %impl.elem0.loc54_28: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc54_28 (constants.%impl.elem0.d7a)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc54_28 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.fa0)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Y_where.type [symbolic = %pattern_type (constants.%pattern_type.b98)] // CHECK:STDOUT: %H.patt.loc54_24.2: @Outer.G.%pattern_type (%pattern_type.b98) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc54_24.2 (constants.%H.patt.314)] // CHECK:STDOUT: %H.loc54_24.1: @Outer.G.%Y_where.type (%Y_where.type.fa0) = symbolic_binding H, 1 [symbolic = %H.loc54_24.1 (constants.%H)] @@ -382,15 +372,9 @@ fn F() { // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.type => constants.%Y.type.eff // CHECK:STDOUT: %.Self.frozen.loc54_28.1 => constants.%.Self.frozen.b95 -// CHECK:STDOUT: %require_complete => constants.%require_complete -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.55f -// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.edf -// CHECK:STDOUT: %assoc0 => constants.%assoc0.05f -// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_34.1 => constants.%Y.lookup_impl_witness.eba -// CHECK:STDOUT: %impl.elem0.loc54_34.1 => constants.%impl.elem0.29d // CHECK:STDOUT: %.Self => constants.%.Self.273 -// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_34.2 => constants.%Y.lookup_impl_witness.f46 -// CHECK:STDOUT: %impl.elem0.loc54_34.2 => constants.%impl.elem0.d7a +// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.f46 +// CHECK:STDOUT: %impl.elem0.loc54_28 => constants.%impl.elem0.d7a // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.fa0 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.b98 // CHECK:STDOUT: %H.patt.loc54_24.2 => constants.%H.patt.314 @@ -439,15 +423,9 @@ fn F() { // CHECK:STDOUT: %OuterParam => constants.%empty_tuple.type // CHECK:STDOUT: %Y.type => constants.%Y.type.d7b // CHECK:STDOUT: %.Self.frozen.loc54_28.1 => constants.%.Self.frozen.62f -// CHECK:STDOUT: %require_complete => constants.%complete_type.2cf -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.a06 -// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.7d9 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.559 -// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_34.1 => constants.%Y.lookup_impl_witness.e35 -// CHECK:STDOUT: %impl.elem0.loc54_34.1 => constants.%impl.elem0.798 // CHECK:STDOUT: %.Self => constants.%.Self.37b -// CHECK:STDOUT: %Y.lookup_impl_witness.loc54_34.2 => constants.%Y.lookup_impl_witness.b19 -// CHECK:STDOUT: %impl.elem0.loc54_34.2 => constants.%impl.elem0.b95 +// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.b19 +// CHECK:STDOUT: %impl.elem0.loc54_28 => constants.%impl.elem0.b95 // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.6ce // CHECK:STDOUT: %pattern_type => constants.%pattern_type.f97 // CHECK:STDOUT: %H.patt.loc54_24.2 => constants.%H.patt.7ee @@ -478,7 +456,7 @@ fn F() { // CHECK:STDOUT: %assoc0.b45: %Y.assoc_type.5d5 = assoc_entity element0, @Y.WithSelf.%T [symbolic] // CHECK:STDOUT: %.Self.frozen.39e: %Y.type.9a0 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Y.type.9a0 [symbolic] -// CHECK:STDOUT: %.Self.frozen.as_type.618: type = facet_access_type %.Self.frozen.39e [symbolic] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.39e [symbolic] // CHECK:STDOUT: %Y.lookup_impl_witness.580: = lookup_impl_witness %.Self.frozen.39e, @Y, @Y(%OuterParam) [symbolic] // CHECK:STDOUT: %impl.elem0.be8: type = impl_witness_access %Y.lookup_impl_witness.580, element0 [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] @@ -532,21 +510,16 @@ fn F() { // CHECK:STDOUT: %impl.elem0.186: type = impl_witness_access %Y.lookup_impl_witness.0bd, element0 [symbolic_self] // CHECK:STDOUT: %Y_where.type.677: type = facet_type <@Y, @Y(%Z1.facet) where %impl.elem0.186 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %.Self.frozen.126: %Y.type.30f = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Self.4a2: %Y.type.30f = symbolic_binding Self, 1 [symbolic] -// CHECK:STDOUT: %Y.assoc_type.104: type = assoc_entity_type @Y, @Y(%Z1.facet) [concrete] -// CHECK:STDOUT: %assoc0.2bd: %Y.assoc_type.104 = assoc_entity element0, @Y.WithSelf.%T [concrete] -// CHECK:STDOUT: %complete_type.d0d: = complete_type_witness %Y.type.30f [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.746: type = facet_access_type %.Self.frozen.126 [symbolic_self] -// CHECK:STDOUT: %.03e: = impl_self_witness %.Self.frozen.126, @Y, @Y(%Z1.facet) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.ad3: type = impl_witness_access %.03e, element0 [symbolic_self] // CHECK:STDOUT: %.4bb: = impl_self_witness %.Self.1da, @Y, @Y(%Z1.facet) [symbolic_self] // CHECK:STDOUT: %impl.elem0.eb1: type = impl_witness_access %.4bb, element0 [symbolic_self] // CHECK:STDOUT: %Y_where.type.d3d: type = facet_type <@Y, @Y(%Z1.facet) where %impl.elem0.eb1 = %empty_tuple.type> [concrete] // CHECK:STDOUT: %.9bc: = impl_self_witness %C.d9e, @Y, @Y(%Z1.facet) [concrete] // CHECK:STDOUT: %Y.impl_witness.1b2: = impl_witness @C.as.Y.impl.%Y.impl_witness_table, @C.as.Y.impl(%Z1.facet) [concrete] +// CHECK:STDOUT: %Self.4a2: %Y.type.30f = symbolic_binding Self, 1 [symbolic] +// CHECK:STDOUT: %Y.assoc_type.104: type = assoc_entity_type @Y, @Y(%Z1.facet) [concrete] +// CHECK:STDOUT: %assoc0.2bd: %Y.assoc_type.104 = assoc_entity element0, @Y.WithSelf.%T [concrete] +// CHECK:STDOUT: %complete_type.d0d: = complete_type_witness %Y.type.30f [concrete] // CHECK:STDOUT: %facet_value.c7c: %Y_where.type.677 = facet_value %C.d9e, (%Y.impl_witness.1b2) [concrete] -// CHECK:STDOUT: %Y.lookup_impl_witness.a66: = lookup_impl_witness %.Self.frozen.126, @Y, @Y(%Z1.facet) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.e0b: type = impl_witness_access %Y.lookup_impl_witness.a66, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.285: type = pattern_type %Y_where.type.677 [concrete] // CHECK:STDOUT: %H.patt.305: %pattern_type.285 = symbolic_binding_pattern H, 1 [symbolic] // CHECK:STDOUT: %Outer.G.specific_fn: = specific_function %Outer.G.550, @Outer.G(%Z1.facet, %facet_value.c7c) [concrete] @@ -649,20 +622,15 @@ fn F() { // CHECK:STDOUT: %C: type = class_type @C, @C(%OuterParam) [symbolic = %C (constants.%C.5f2)] // CHECK:STDOUT: %Y.type: type = facet_type <@Y, @Y(%OuterParam)> [symbolic = %Y.type (constants.%Y.type.9a0)] // CHECK:STDOUT: %.Self.frozen.loc14_15.2: @C.as.Y.impl.%Y.type (%Y.type.9a0) = symbolic_binding .Self [symbolic = %.Self.frozen.loc14_15.2 (constants.%.Self.frozen.39e)] -// CHECK:STDOUT: %require_complete: = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete)] -// 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.618)] -// CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.5d5)] -// CHECK:STDOUT: %assoc0: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.5d5) = assoc_entity element0, @Y.WithSelf.%T [symbolic = %assoc0 (constants.%assoc0.b45)] -// CHECK:STDOUT: %.loc14_21.3: = impl_self_witness %.Self.frozen.loc14_15.2, @Y, @Y(%OuterParam) [symbolic = %.loc14_21.3 (constants.%.eeb)] -// CHECK:STDOUT: %impl.elem0.loc14_21.3: type = impl_witness_access %.loc14_21.3, element0 [symbolic = %impl.elem0.loc14_21.3 (constants.%impl.elem0.756)] // CHECK:STDOUT: %.Self: @C.as.Y.impl.%Y.type (%Y.type.9a0) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.2b6)] -// CHECK:STDOUT: %.loc14_21.4: = impl_self_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %.loc14_21.4 (constants.%.66e)] -// CHECK:STDOUT: %impl.elem0.loc14_21.4: type = impl_witness_access %.loc14_21.4, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.295)] -// 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.aa4)] +// CHECK:STDOUT: %.loc14_15.2: = impl_self_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %.loc14_15.2 (constants.%.66e)] +// CHECK:STDOUT: %impl.elem0.loc14_15: type = impl_witness_access %.loc14_15.2, element0 [symbolic = %impl.elem0.loc14_15 (constants.%impl.elem0.295)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc14_15 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.aa4)] // CHECK:STDOUT: %.loc14_29: = impl_self_witness %C, @Y, @Y(%OuterParam) [symbolic = %.loc14_29 (constants.%.6b3)] // 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.d75)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: +// CHECK:STDOUT: %require_complete: = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %Y.ref { // CHECK:STDOUT: %Y.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @C.as.Y.impl [concrete] @@ -714,20 +682,20 @@ fn F() { // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc11_26 [symbolic = %Y.type (constants.%Y.type.9a0)] // CHECK:STDOUT: %.Self.frozen.loc11_28.2: @Outer.G.%Y.type (%Y.type.9a0) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_28.1 (constants.%.Self.frozen.39e)] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] -// CHECK:STDOUT: %.Self.ref: @Outer.G.%Y.type (%Y.type.9a0) = name_ref .Self, %.Self.frozen.loc11_28.2 [symbolic = %.Self.frozen.loc11_28.1 (constants.%.Self.frozen.39e)] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.618)] -// CHECK:STDOUT: %.loc11_34.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.618)] -// CHECK:STDOUT: %.loc11_34.2: @Outer.G.%Y.assoc_type (%Y.assoc_type.5d5) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.39e) [symbolic = %assoc0 (constants.%assoc0.b45)] -// CHECK:STDOUT: %T.ref: @Outer.G.%Y.assoc_type (%Y.assoc_type.5d5) = name_ref T, %.loc11_34.2 [symbolic = %assoc0 (constants.%assoc0.b45)] -// CHECK:STDOUT: %impl.elem0.loc11_34.3: type = impl_witness_access constants.%Y.lookup_impl_witness.580, element0 [symbolic = %impl.elem0.loc11_34.1 (constants.%impl.elem0.be8)] +// CHECK:STDOUT: %.Self.ref: %Y.type.9a0 = name_ref .Self, %.Self.frozen.loc11_28.2 [symbolic = constants.%.Self.frozen.39e] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_34.1: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc11_34.2: %Y.assoc_type.5d5 = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.39e) [symbolic = constants.%assoc0.b45] +// CHECK:STDOUT: %T.ref: %Y.assoc_type.5d5 = name_ref T, %.loc11_34.2 [symbolic = constants.%assoc0.b45] +// CHECK:STDOUT: %impl.elem0.loc11_34.1: type = impl_witness_access constants.%Y.lookup_impl_witness.580, element0 [symbolic = constants.%impl.elem0.be8] // CHECK:STDOUT: %.loc11_40.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_40.2: type = converted %.loc11_40.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %rewrite.loc11_37.1 = requirement_rewrite %impl.elem0.loc11_34.3, %.loc11_40.2 [concrete] -// CHECK:STDOUT: %impl.elem0.loc11_34.4: type = impl_witness_access constants.%Y.lookup_impl_witness.00e, element0 [symbolic = %impl.elem0.loc11_34.2 (constants.%impl.elem0.43a)] -// CHECK:STDOUT: %rewrite.loc11_37.2 = requirement_rewrite %impl.elem0.loc11_34.4, %.loc11_40.2 [concrete] +// CHECK:STDOUT: %rewrite.loc11_37.1 = requirement_rewrite %impl.elem0.loc11_34.1, %.loc11_40.2 [concrete] +// CHECK:STDOUT: %impl.elem0.loc11_34.2: type = impl_witness_access constants.%Y.lookup_impl_witness.00e, element0 [symbolic = constants.%impl.elem0.43a] +// CHECK:STDOUT: %rewrite.loc11_37.2 = requirement_rewrite %impl.elem0.loc11_34.2, %.loc11_40.2 [concrete] // CHECK:STDOUT: %.loc11_28.2: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.352)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] -// CHECK:STDOUT: %rewrite.loc11_37.2 = requirement_rewrite %impl.elem0.loc11_34.4, %.loc11_40.2 [concrete] +// CHECK:STDOUT: %rewrite.loc11_37.2 = requirement_rewrite %impl.elem0.loc11_34.2, %.loc11_40.2 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %H.loc11_24.2: @Outer.G.%Y_where.type (%Y_where.type.352) = symbolic_binding H, 1 [symbolic = %H.loc11_24.1 (constants.%H)] @@ -740,18 +708,18 @@ fn F() { // CHECK:STDOUT: %Y.ref: type = name_ref Y, %.loc14_13 [symbolic = %Y.type (constants.%Y.type.9a0)] // CHECK:STDOUT: %.Self.frozen.loc14_15.1: @C.as.Y.impl.%Y.type (%Y.type.9a0) = symbolic_binding .Self [symbolic = %.Self.frozen.loc14_15.2 (constants.%.Self.frozen.39e)] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Y.ref [concrete] -// CHECK:STDOUT: %.Self.ref: @C.as.Y.impl.%Y.type (%Y.type.9a0) = name_ref .Self, %.Self.frozen.loc14_15.1 [symbolic = %.Self.frozen.loc14_15.2 (constants.%.Self.frozen.39e)] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.618)] -// CHECK:STDOUT: %.loc14_21.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.618)] -// CHECK:STDOUT: %.loc14_21.2: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.5d5) = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.39e) [symbolic = %assoc0 (constants.%assoc0.b45)] -// CHECK:STDOUT: %T.ref: @C.as.Y.impl.%Y.assoc_type (%Y.assoc_type.5d5) = name_ref T, %.loc14_21.2 [symbolic = %assoc0 (constants.%assoc0.b45)] -// CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%.eeb, element0 [symbolic = %impl.elem0.loc14_21.3 (constants.%impl.elem0.756)] +// CHECK:STDOUT: %.Self.ref: %Y.type.9a0 = name_ref .Self, %.Self.frozen.loc14_15.1 [symbolic = constants.%.Self.frozen.39e] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc14_21.1: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.frozen.as_type] +// CHECK:STDOUT: %.loc14_21.2: %Y.assoc_type.5d5 = specific_constant @T.%assoc0, @Y.WithSelf(constants.%OuterParam, constants.%.Self.frozen.39e) [symbolic = constants.%assoc0.b45] +// CHECK:STDOUT: %T.ref: %Y.assoc_type.5d5 = name_ref T, %.loc14_21.2 [symbolic = constants.%assoc0.b45] +// CHECK:STDOUT: %impl.elem0.loc14_21.1: type = impl_witness_access constants.%.eeb, element0 [symbolic = constants.%impl.elem0.756] // 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: %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.%.66e, element0 [symbolic = %impl.elem0.loc14_21.4 (constants.%impl.elem0.295)] +// CHECK:STDOUT: %impl.elem0.loc14_21.2: type = impl_witness_access constants.%.66e, element0 [symbolic = constants.%impl.elem0.295] // 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.aa4)] { +// CHECK:STDOUT: %.loc14_15.1: type = where_expr [symbolic = %Y_where.type (constants.%Y_where.type.aa4)] { // 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: } @@ -776,16 +744,10 @@ fn F() { // 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.9a0)] // CHECK:STDOUT: %.Self.frozen.loc11_28.1: @Outer.G.%Y.type (%Y.type.9a0) = symbolic_binding .Self [symbolic = %.Self.frozen.loc11_28.1 (constants.%.Self.frozen.39e)] -// CHECK:STDOUT: %require_complete: = require_complete_type %Y.type [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc11_28.1 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.618)] -// CHECK:STDOUT: %Y.assoc_type: type = assoc_entity_type @Y, @Y(%OuterParam) [symbolic = %Y.assoc_type (constants.%Y.assoc_type.5d5)] -// CHECK:STDOUT: %assoc0: @Outer.G.%Y.assoc_type (%Y.assoc_type.5d5) = assoc_entity element0, @Y.WithSelf.%T [symbolic = %assoc0 (constants.%assoc0.b45)] -// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_34.1: = lookup_impl_witness %.Self.frozen.loc11_28.1, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc11_34.1 (constants.%Y.lookup_impl_witness.580)] -// CHECK:STDOUT: %impl.elem0.loc11_34.1: type = impl_witness_access %Y.lookup_impl_witness.loc11_34.1, element0 [symbolic = %impl.elem0.loc11_34.1 (constants.%impl.elem0.be8)] // CHECK:STDOUT: %.Self: @Outer.G.%Y.type (%Y.type.9a0) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.2b6)] -// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_34.2: = lookup_impl_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness.loc11_34.2 (constants.%Y.lookup_impl_witness.00e)] -// CHECK:STDOUT: %impl.elem0.loc11_34.2: type = impl_witness_access %Y.lookup_impl_witness.loc11_34.2, element0 [symbolic = %impl.elem0.loc11_34.2 (constants.%impl.elem0.43a)] -// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc11_34.2 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.352)] +// CHECK:STDOUT: %Y.lookup_impl_witness: = lookup_impl_witness %.Self, @Y, @Y(%OuterParam) [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness.00e)] +// CHECK:STDOUT: %impl.elem0.loc11_28: type = impl_witness_access %Y.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_28 (constants.%impl.elem0.43a)] +// CHECK:STDOUT: %Y_where.type: type = facet_type <@Y, @Y(%OuterParam) where %impl.elem0.loc11_28 = constants.%empty_tuple.type> [symbolic = %Y_where.type (constants.%Y_where.type.352)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Y_where.type [symbolic = %pattern_type (constants.%pattern_type.8be)] // CHECK:STDOUT: %H.patt.loc11_24.2: @Outer.G.%pattern_type (%pattern_type.8be) = symbolic_binding_pattern H, 1 [symbolic = %H.patt.loc11_24.2 (constants.%H.patt.57a)] // CHECK:STDOUT: %H.loc11_24.1: @Outer.G.%Y_where.type (%Y_where.type.352) = symbolic_binding H, 1 [symbolic = %H.loc11_24.1 (constants.%H)] @@ -885,15 +847,9 @@ fn F() { // CHECK:STDOUT: %OuterParam => constants.%OuterParam // CHECK:STDOUT: %Y.type => constants.%Y.type.9a0 // CHECK:STDOUT: %.Self.frozen.loc11_28.1 => constants.%.Self.frozen.39e -// CHECK:STDOUT: %require_complete => constants.%require_complete -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.618 -// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.5d5 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.b45 -// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_34.1 => constants.%Y.lookup_impl_witness.580 -// CHECK:STDOUT: %impl.elem0.loc11_34.1 => constants.%impl.elem0.be8 // CHECK:STDOUT: %.Self => constants.%.Self.2b6 -// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_34.2 => constants.%Y.lookup_impl_witness.00e -// CHECK:STDOUT: %impl.elem0.loc11_34.2 => constants.%impl.elem0.43a +// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.00e +// CHECK:STDOUT: %impl.elem0.loc11_28 => constants.%impl.elem0.43a // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.352 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.8be // CHECK:STDOUT: %H.patt.loc11_24.2 => constants.%H.patt.57a @@ -907,15 +863,9 @@ fn F() { // CHECK:STDOUT: %C => constants.%C.5f2 // CHECK:STDOUT: %Y.type => constants.%Y.type.9a0 // CHECK:STDOUT: %.Self.frozen.loc14_15.2 => constants.%.Self.frozen.39e -// CHECK:STDOUT: %require_complete => constants.%require_complete -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.618 -// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.5d5 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.b45 -// CHECK:STDOUT: %.loc14_21.3 => constants.%.eeb -// CHECK:STDOUT: %impl.elem0.loc14_21.3 => constants.%impl.elem0.756 // CHECK:STDOUT: %.Self => constants.%.Self.2b6 -// CHECK:STDOUT: %.loc14_21.4 => constants.%.66e -// CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.295 +// CHECK:STDOUT: %.loc14_15.2 => constants.%.66e +// CHECK:STDOUT: %impl.elem0.loc14_15 => constants.%impl.elem0.295 // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.aa4 // CHECK:STDOUT: %.loc14_29 => constants.%.6b3 // CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.d75 @@ -961,20 +911,15 @@ fn F() { // CHECK:STDOUT: %C => constants.%C.d9e // CHECK:STDOUT: %Y.type => constants.%Y.type.30f // CHECK:STDOUT: %.Self.frozen.loc14_15.2 => constants.%.Self.frozen.126 -// CHECK:STDOUT: %require_complete => constants.%complete_type.d0d -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.746 -// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.104 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2bd -// CHECK:STDOUT: %.loc14_21.3 => constants.%.03e -// CHECK:STDOUT: %impl.elem0.loc14_21.3 => constants.%impl.elem0.ad3 // CHECK:STDOUT: %.Self => constants.%.Self.1da -// CHECK:STDOUT: %.loc14_21.4 => constants.%.4bb -// CHECK:STDOUT: %impl.elem0.loc14_21.4 => constants.%impl.elem0.eb1 +// CHECK:STDOUT: %.loc14_15.2 => constants.%.4bb +// CHECK:STDOUT: %impl.elem0.loc14_15 => constants.%impl.elem0.eb1 // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.d3d // CHECK:STDOUT: %.loc14_29 => constants.%.9bc // CHECK:STDOUT: %Y.impl_witness.loc14_29.2 => constants.%Y.impl_witness.1b2 // CHECK:STDOUT: // CHECK:STDOUT: !definition: +// CHECK:STDOUT: %require_complete => constants.%complete_type.d0d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Y.WithSelf(constants.%Z1.facet, constants.%Self.6f0) { @@ -988,15 +933,9 @@ fn F() { // CHECK:STDOUT: %OuterParam => constants.%Z1.facet // CHECK:STDOUT: %Y.type => constants.%Y.type.30f // CHECK:STDOUT: %.Self.frozen.loc11_28.1 => constants.%.Self.frozen.126 -// CHECK:STDOUT: %require_complete => constants.%complete_type.d0d -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.746 -// CHECK:STDOUT: %Y.assoc_type => constants.%Y.assoc_type.104 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2bd -// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_34.1 => constants.%Y.lookup_impl_witness.a66 -// CHECK:STDOUT: %impl.elem0.loc11_34.1 => constants.%impl.elem0.e0b // CHECK:STDOUT: %.Self => constants.%.Self.1da -// CHECK:STDOUT: %Y.lookup_impl_witness.loc11_34.2 => constants.%Y.lookup_impl_witness.0bd -// CHECK:STDOUT: %impl.elem0.loc11_34.2 => constants.%impl.elem0.186 +// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness.0bd +// CHECK:STDOUT: %impl.elem0.loc11_28 => constants.%impl.elem0.186 // CHECK:STDOUT: %Y_where.type => constants.%Y_where.type.677 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.285 // CHECK:STDOUT: %H.patt.loc11_24.2 => constants.%H.patt.305 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 60bf1d67ce49..b7aa942d7b85 100644 --- a/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon +++ b/toolchain/check/testdata/impl/lookup/specialization_with_symbolic_rewrite.carbon @@ -195,18 +195,18 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Z.type.loc9_40.1: type = facet_type <@Z, @Z(constants.%S)> [symbolic = %Z.type.loc9_40.2 (constants.%Z.type.83d)] // CHECK:STDOUT: %.Self.frozen.loc9_42.1: @T.as.Z.impl.7e7.%Z.type.loc9_40.2 (%Z.type.83d) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.04c)] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc9_40.1 [concrete] -// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.7e7.%Z.type.loc9_40.2 (%Z.type.83d) = name_ref .Self, %.Self.frozen.loc9_42.1 [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.04c)] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.def)] -// CHECK:STDOUT: %.loc9_48.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.def)] -// CHECK:STDOUT: %.loc9_48.2: @T.as.Z.impl.7e7.%Z.assoc_type (%Z.assoc_type.f08) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.04c) [symbolic = %assoc0 (constants.%assoc0.f21)] -// CHECK:STDOUT: %X.ref: @T.as.Z.impl.7e7.%Z.assoc_type (%Z.assoc_type.f08) = name_ref X, %.loc9_48.2 [symbolic = %assoc0 (constants.%assoc0.f21)] -// CHECK:STDOUT: %impl.elem0.loc9_48.1: type = impl_witness_access constants.%.c4e, element0 [symbolic = %impl.elem0.loc9_48.3 (constants.%impl.elem0.77c)] +// CHECK:STDOUT: %.Self.ref: %Z.type.83d = name_ref .Self, %.Self.frozen.loc9_42.1 [symbolic = constants.%.Self.frozen.04c] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.frozen.as_type.def] +// CHECK:STDOUT: %.loc9_48.1: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.frozen.as_type.def] +// CHECK:STDOUT: %.loc9_48.2: %Z.assoc_type.f08 = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.04c) [symbolic = constants.%assoc0.f21] +// CHECK:STDOUT: %X.ref: %Z.assoc_type.f08 = name_ref X, %.loc9_48.2 [symbolic = constants.%assoc0.f21] +// CHECK:STDOUT: %impl.elem0.loc9_48.1: type = impl_witness_access constants.%.c4e, element0 [symbolic = constants.%impl.elem0.77c] // CHECK:STDOUT: %.loc9_54.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple] // CHECK:STDOUT: %.loc9_54.2: type = converted %.loc9_54.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %rewrite.loc9_51.1 = requirement_rewrite %impl.elem0.loc9_48.1, %.loc9_54.2 [concrete] -// CHECK:STDOUT: %impl.elem0.loc9_48.2: type = impl_witness_access constants.%.b6e, element0 [symbolic = %impl.elem0.loc9_48.4 (constants.%impl.elem0.6b8)] +// CHECK:STDOUT: %impl.elem0.loc9_48.2: type = impl_witness_access constants.%.b6e, element0 [symbolic = constants.%impl.elem0.6b8] // CHECK:STDOUT: %rewrite.loc9_51.2 = requirement_rewrite %impl.elem0.loc9_48.2, %.loc9_54.2 [concrete] -// CHECK:STDOUT: %.loc9_42: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.270)] { +// CHECK:STDOUT: %.loc9_42.1: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.270)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc9_40.1 [concrete] // CHECK:STDOUT: %rewrite.loc9_51.2 = requirement_rewrite %impl.elem0.loc9_48.2, %.loc9_54.2 [concrete] // CHECK:STDOUT: } @@ -237,7 +237,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc11_45.2: %Z.assoc_type.714 = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%.Self.frozen.738) [concrete = constants.%assoc0.fd2] // CHECK:STDOUT: %X.ref: %Z.assoc_type.714 = name_ref X, %.loc11_45.2 [concrete = constants.%assoc0.fd2] // CHECK:STDOUT: %impl.elem0.loc11_45.1: type = impl_witness_access constants.%.869, element0 [symbolic_self = constants.%impl.elem0.dd4] -// CHECK:STDOUT: %T.ref.loc11_50: type = name_ref T, %T.loc11_21.1 [symbolic = %T.loc11_21.2 (constants.%T.67d)] +// CHECK:STDOUT: %T.ref.loc11_50: type = name_ref T, %T.loc11_21.1 [symbolic = constants.%T.67d] // CHECK:STDOUT: %rewrite.loc11_48.1 = requirement_rewrite %impl.elem0.loc11_45.1, %T.ref.loc11_50 [concrete] // CHECK:STDOUT: %impl.elem0.loc11_45.2: type = impl_witness_access constants.%.449, element0 [symbolic_self = constants.%impl.elem0.8b9] // CHECK:STDOUT: %rewrite.loc11_48.2 = requirement_rewrite %impl.elem0.loc11_45.2, %T.ref.loc11_50 [concrete] @@ -307,20 +307,15 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %S.loc9_24.2: type = symbolic_binding S, 1 [symbolic = %S.loc9_24.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc9_40.2: type = facet_type <@Z, @Z(%S.loc9_24.2)> [symbolic = %Z.type.loc9_40.2 (constants.%Z.type.83d)] // CHECK:STDOUT: %.Self.frozen.loc9_42.2: @T.as.Z.impl.7e7.%Z.type.loc9_40.2 (%Z.type.83d) = symbolic_binding .Self [symbolic = %.Self.frozen.loc9_42.2 (constants.%.Self.frozen.04c)] -// CHECK:STDOUT: %require_complete: = require_complete_type %Z.type.loc9_40.2 [symbolic = %require_complete (constants.%require_complete.dc6)] -// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc9_42.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.def)] -// CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z, @Z(%S.loc9_24.2) [symbolic = %Z.assoc_type (constants.%Z.assoc_type.f08)] -// CHECK:STDOUT: %assoc0: @T.as.Z.impl.7e7.%Z.assoc_type (%Z.assoc_type.f08) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.f21)] -// CHECK:STDOUT: %.loc9_48.3: = impl_self_witness %.Self.frozen.loc9_42.2, @Z, @Z(%S.loc9_24.2) [symbolic = %.loc9_48.3 (constants.%.c4e)] -// CHECK:STDOUT: %impl.elem0.loc9_48.3: type = impl_witness_access %.loc9_48.3, element0 [symbolic = %impl.elem0.loc9_48.3 (constants.%impl.elem0.77c)] // CHECK:STDOUT: %.Self: @T.as.Z.impl.7e7.%Z.type.loc9_40.2 (%Z.type.83d) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.66b)] -// CHECK:STDOUT: %.loc9_48.4: = impl_self_witness %.Self, @Z, @Z(%S.loc9_24.2) [symbolic = %.loc9_48.4 (constants.%.b6e)] -// CHECK:STDOUT: %impl.elem0.loc9_48.4: type = impl_witness_access %.loc9_48.4, element0 [symbolic = %impl.elem0.loc9_48.4 (constants.%impl.elem0.6b8)] -// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc9_24.2) where %impl.elem0.loc9_48.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.270)] +// CHECK:STDOUT: %.loc9_42.2: = impl_self_witness %.Self, @Z, @Z(%S.loc9_24.2) [symbolic = %.loc9_42.2 (constants.%.b6e)] +// CHECK:STDOUT: %impl.elem0.loc9_42: type = impl_witness_access %.loc9_42.2, element0 [symbolic = %impl.elem0.loc9_42 (constants.%impl.elem0.6b8)] +// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc9_24.2) where %impl.elem0.loc9_42 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.270)] // CHECK:STDOUT: %.loc9_56: = impl_self_witness %T.loc9_15.2, @Z, @Z(%S.loc9_24.2) [symbolic = %.loc9_56 (constants.%.a4f)] // CHECK:STDOUT: %Z.impl_witness.loc9_56.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.7e7(%T.loc9_15.2, %S.loc9_24.2) [symbolic = %Z.impl_witness.loc9_56.2 (constants.%Z.impl_witness.793)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: +// CHECK:STDOUT: %require_complete: = require_complete_type %Z.type.loc9_40.2 [symbolic = %require_complete (constants.%require_complete.dc6)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %Z.type.loc9_40.1 { // CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.7e7 [concrete] @@ -430,15 +425,9 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %S.loc9_24.2 => constants.%S // CHECK:STDOUT: %Z.type.loc9_40.2 => constants.%Z.type.83d // CHECK:STDOUT: %.Self.frozen.loc9_42.2 => constants.%.Self.frozen.04c -// CHECK:STDOUT: %require_complete => constants.%require_complete.dc6 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.def -// CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.f08 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.f21 -// CHECK:STDOUT: %.loc9_48.3 => constants.%.c4e -// CHECK:STDOUT: %impl.elem0.loc9_48.3 => constants.%impl.elem0.77c // CHECK:STDOUT: %.Self => constants.%.Self.66b -// CHECK:STDOUT: %.loc9_48.4 => constants.%.b6e -// CHECK:STDOUT: %impl.elem0.loc9_48.4 => constants.%impl.elem0.6b8 +// CHECK:STDOUT: %.loc9_42.2 => constants.%.b6e +// CHECK:STDOUT: %impl.elem0.loc9_42 => constants.%impl.elem0.6b8 // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.270 // CHECK:STDOUT: %.loc9_56 => constants.%.a4f // CHECK:STDOUT: %Z.impl_witness.loc9_56.2 => constants.%Z.impl_witness.793 @@ -641,18 +630,18 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %Z.type.loc10_40.1: type = facet_type <@Z, @Z(constants.%S)> [symbolic = %Z.type.loc10_40.2 (constants.%Z.type.83d)] // CHECK:STDOUT: %.Self.frozen.loc10_42.1: @T.as.Z.impl.7e7.%Z.type.loc10_40.2 (%Z.type.83d) = symbolic_binding .Self [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.04c)] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc10_40.1 [concrete] -// CHECK:STDOUT: %.Self.ref: @T.as.Z.impl.7e7.%Z.type.loc10_40.2 (%Z.type.83d) = name_ref .Self, %.Self.frozen.loc10_42.1 [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.04c)] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.def)] -// CHECK:STDOUT: %.loc10_48.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.def)] -// CHECK:STDOUT: %.loc10_48.2: @T.as.Z.impl.7e7.%Z.assoc_type (%Z.assoc_type.f08) = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.04c) [symbolic = %assoc0 (constants.%assoc0.f21)] -// CHECK:STDOUT: %X.ref: @T.as.Z.impl.7e7.%Z.assoc_type (%Z.assoc_type.f08) = name_ref X, %.loc10_48.2 [symbolic = %assoc0 (constants.%assoc0.f21)] -// CHECK:STDOUT: %impl.elem0.loc10_48.1: type = impl_witness_access constants.%.c4e, element0 [symbolic = %impl.elem0.loc10_48.3 (constants.%impl.elem0.77c)] +// CHECK:STDOUT: %.Self.ref: %Z.type.83d = name_ref .Self, %.Self.frozen.loc10_42.1 [symbolic = constants.%.Self.frozen.04c] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.frozen.as_type.def] +// CHECK:STDOUT: %.loc10_48.1: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.frozen.as_type.def] +// CHECK:STDOUT: %.loc10_48.2: %Z.assoc_type.f08 = specific_constant @X.%assoc0, @Z.WithSelf(constants.%S, constants.%.Self.frozen.04c) [symbolic = constants.%assoc0.f21] +// CHECK:STDOUT: %X.ref: %Z.assoc_type.f08 = name_ref X, %.loc10_48.2 [symbolic = constants.%assoc0.f21] +// CHECK:STDOUT: %impl.elem0.loc10_48.1: type = impl_witness_access constants.%.c4e, element0 [symbolic = constants.%impl.elem0.77c] // 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: %rewrite.loc10_51.1 = requirement_rewrite %impl.elem0.loc10_48.1, %.loc10_54.2 [concrete] -// CHECK:STDOUT: %impl.elem0.loc10_48.2: type = impl_witness_access constants.%.b6e, element0 [symbolic = %impl.elem0.loc10_48.4 (constants.%impl.elem0.6b8)] +// CHECK:STDOUT: %impl.elem0.loc10_48.2: type = impl_witness_access constants.%.b6e, element0 [symbolic = constants.%impl.elem0.6b8] // CHECK:STDOUT: %rewrite.loc10_51.2 = requirement_rewrite %impl.elem0.loc10_48.2, %.loc10_54.2 [concrete] -// CHECK:STDOUT: %.loc10_42: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.270)] { +// CHECK:STDOUT: %.loc10_42.1: type = where_expr [symbolic = %Z_where.type (constants.%Z_where.type.270)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Z.type.loc10_40.1 [concrete] // CHECK:STDOUT: %rewrite.loc10_51.2 = requirement_rewrite %impl.elem0.loc10_48.2, %.loc10_54.2 [concrete] // CHECK:STDOUT: } @@ -683,7 +672,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc12_39.2: %Z.assoc_type.714 = specific_constant @X.%assoc0, @Z.WithSelf(constants.%C, constants.%.Self.frozen.738) [concrete = constants.%assoc0.fd2] // CHECK:STDOUT: %X.ref: %Z.assoc_type.714 = name_ref X, %.loc12_39.2 [concrete = constants.%assoc0.fd2] // CHECK:STDOUT: %impl.elem0.loc12_39.1: type = impl_witness_access constants.%.869, element0 [symbolic_self = constants.%impl.elem0.dd4] -// CHECK:STDOUT: %T.ref.loc12_44: type = name_ref T, %T.loc12_15.1 [symbolic = %T.loc12_15.2 (constants.%T.67d)] +// CHECK:STDOUT: %T.ref.loc12_44: type = name_ref T, %T.loc12_15.1 [symbolic = constants.%T.67d] // CHECK:STDOUT: %rewrite.loc12_42.1 = requirement_rewrite %impl.elem0.loc12_39.1, %T.ref.loc12_44 [concrete] // CHECK:STDOUT: %impl.elem0.loc12_39.2: type = impl_witness_access constants.%.449, element0 [symbolic_self = constants.%impl.elem0.8b9] // CHECK:STDOUT: %rewrite.loc12_42.2 = requirement_rewrite %impl.elem0.loc12_39.2, %T.ref.loc12_44 [concrete] @@ -764,20 +753,15 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %S.loc10_24.2: type = symbolic_binding S, 1 [symbolic = %S.loc10_24.2 (constants.%S)] // CHECK:STDOUT: %Z.type.loc10_40.2: type = facet_type <@Z, @Z(%S.loc10_24.2)> [symbolic = %Z.type.loc10_40.2 (constants.%Z.type.83d)] // CHECK:STDOUT: %.Self.frozen.loc10_42.2: @T.as.Z.impl.7e7.%Z.type.loc10_40.2 (%Z.type.83d) = symbolic_binding .Self [symbolic = %.Self.frozen.loc10_42.2 (constants.%.Self.frozen.04c)] -// CHECK:STDOUT: %require_complete: = require_complete_type %Z.type.loc10_40.2 [symbolic = %require_complete (constants.%require_complete.dc6)] -// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc10_42.2 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.def)] -// CHECK:STDOUT: %Z.assoc_type: type = assoc_entity_type @Z, @Z(%S.loc10_24.2) [symbolic = %Z.assoc_type (constants.%Z.assoc_type.f08)] -// CHECK:STDOUT: %assoc0: @T.as.Z.impl.7e7.%Z.assoc_type (%Z.assoc_type.f08) = assoc_entity element0, @Z.WithSelf.%X [symbolic = %assoc0 (constants.%assoc0.f21)] -// CHECK:STDOUT: %.loc10_48.3: = impl_self_witness %.Self.frozen.loc10_42.2, @Z, @Z(%S.loc10_24.2) [symbolic = %.loc10_48.3 (constants.%.c4e)] -// CHECK:STDOUT: %impl.elem0.loc10_48.3: type = impl_witness_access %.loc10_48.3, element0 [symbolic = %impl.elem0.loc10_48.3 (constants.%impl.elem0.77c)] // CHECK:STDOUT: %.Self: @T.as.Z.impl.7e7.%Z.type.loc10_40.2 (%Z.type.83d) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.66b)] -// CHECK:STDOUT: %.loc10_48.4: = impl_self_witness %.Self, @Z, @Z(%S.loc10_24.2) [symbolic = %.loc10_48.4 (constants.%.b6e)] -// CHECK:STDOUT: %impl.elem0.loc10_48.4: type = impl_witness_access %.loc10_48.4, element0 [symbolic = %impl.elem0.loc10_48.4 (constants.%impl.elem0.6b8)] -// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc10_24.2) where %impl.elem0.loc10_48.4 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.270)] +// CHECK:STDOUT: %.loc10_42.2: = impl_self_witness %.Self, @Z, @Z(%S.loc10_24.2) [symbolic = %.loc10_42.2 (constants.%.b6e)] +// CHECK:STDOUT: %impl.elem0.loc10_42: type = impl_witness_access %.loc10_42.2, element0 [symbolic = %impl.elem0.loc10_42 (constants.%impl.elem0.6b8)] +// CHECK:STDOUT: %Z_where.type: type = facet_type <@Z, @Z(%S.loc10_24.2) where %impl.elem0.loc10_42 = constants.%empty_tuple.type> [symbolic = %Z_where.type (constants.%Z_where.type.270)] // CHECK:STDOUT: %.loc10_56: = impl_self_witness %T.loc10_15.2, @Z, @Z(%S.loc10_24.2) [symbolic = %.loc10_56 (constants.%.a4f)] // CHECK:STDOUT: %Z.impl_witness.loc10_56.2: = impl_witness %Z.impl_witness_table, @T.as.Z.impl.7e7(%T.loc10_15.2, %S.loc10_24.2) [symbolic = %Z.impl_witness.loc10_56.2 (constants.%Z.impl_witness.793)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: +// CHECK:STDOUT: %require_complete: = require_complete_type %Z.type.loc10_40.2 [symbolic = %require_complete (constants.%require_complete.dc6)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %Z.type.loc10_40.1 { // CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @T.as.Z.impl.7e7 [concrete] @@ -900,15 +884,9 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %S.loc10_24.2 => constants.%S // CHECK:STDOUT: %Z.type.loc10_40.2 => constants.%Z.type.83d // CHECK:STDOUT: %.Self.frozen.loc10_42.2 => constants.%.Self.frozen.04c -// CHECK:STDOUT: %require_complete => constants.%require_complete.dc6 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.def -// CHECK:STDOUT: %Z.assoc_type => constants.%Z.assoc_type.f08 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.f21 -// CHECK:STDOUT: %.loc10_48.3 => constants.%.c4e -// CHECK:STDOUT: %impl.elem0.loc10_48.3 => constants.%impl.elem0.77c // CHECK:STDOUT: %.Self => constants.%.Self.66b -// CHECK:STDOUT: %.loc10_48.4 => constants.%.b6e -// CHECK:STDOUT: %impl.elem0.loc10_48.4 => constants.%impl.elem0.6b8 +// CHECK:STDOUT: %.loc10_42.2 => constants.%.b6e +// CHECK:STDOUT: %impl.elem0.loc10_42 => constants.%impl.elem0.6b8 // CHECK:STDOUT: %Z_where.type => constants.%Z_where.type.270 // CHECK:STDOUT: %.loc10_56 => constants.%.a4f // CHECK:STDOUT: %Z.impl_witness.loc10_56.2 => constants.%Z.impl_witness.793 @@ -1057,14 +1035,14 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc7_44: 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.loc7_44.1: type = impl_witness_access constants.%.c6b, element0 [symbolic_self = constants.%impl.elem0.949] -// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] -// CHECK:STDOUT: %ptr.loc7_53.1: type = ptr_type %U.ref.loc7_52 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = constants.%U.67d] +// CHECK:STDOUT: %ptr.loc7_53: type = ptr_type %U.ref.loc7_52 [symbolic = constants.%ptr.e8f8f9.1] +// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53 [concrete] // CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%.51f, element0 [symbolic_self = constants.%impl.elem0.406] -// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53 [concrete] // CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774fa9.1)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] -// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7_23.1: type = splice_block %.loc7_23.2 [concrete = type] { // CHECK:STDOUT: %.Self.frozen.loc7_21: type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.e58] @@ -1120,8 +1098,8 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: generic final impl @U.as.Ptr.impl(%U.loc7_21.1: type) { // CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.9a5 = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.3a0)] // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] -// CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774fa9.1)] +// CHECK:STDOUT: %ptr.loc7_38: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_38 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_38> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774fa9.1)] // CHECK:STDOUT: %.loc7_55: = impl_self_witness %U.loc7_21.2, @Ptr [symbolic = %.loc7_55 (constants.%.f8fe26.1)] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.5a17a2.1)] // CHECK:STDOUT: @@ -1130,7 +1108,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: final impl: %U.ref.loc7_29 as %Ptr.ref { // CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.5a17a2.1)] -// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_38 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: extend %Ptr.ref @@ -1192,7 +1170,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%U.67d) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.3a0 // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d -// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1 +// CHECK:STDOUT: %ptr.loc7_38 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774fa9.1 // CHECK:STDOUT: %.loc7_55 => constants.%.f8fe26.1 // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.5a17a2.1 @@ -1205,7 +1183,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%T.67d) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.3a0 // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.67d -// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.2 +// CHECK:STDOUT: %ptr.loc7_38 => constants.%ptr.e8f8f9.2 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774fa9.2 // CHECK:STDOUT: %.loc7_55 => constants.%.f8fe26.2 // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.5a17a2.2 @@ -1316,14 +1294,14 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc7_44: 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.loc7_44.1: type = impl_witness_access constants.%.c6b, element0 [symbolic_self = constants.%impl.elem0.949] -// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] -// CHECK:STDOUT: %ptr.loc7_53.1: type = ptr_type %U.ref.loc7_52 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = constants.%U.67d] +// CHECK:STDOUT: %ptr.loc7_53: type = ptr_type %U.ref.loc7_52 [symbolic = constants.%ptr.e8f8f9.1] +// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53 [concrete] // CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%.51f, element0 [symbolic_self = constants.%impl.elem0.406] -// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53 [concrete] // CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] -// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7_23.1: type = splice_block %.loc7_23.2 [concrete = type] { // CHECK:STDOUT: %.Self.frozen.loc7_21: type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.e58] @@ -1382,8 +1360,8 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: generic final impl @U.as.Ptr.impl(%U.loc7_21.1: type) { // CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.9a5 = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.3a0)] // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] -// CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] +// CHECK:STDOUT: %ptr.loc7_38: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_38 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_38> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] // CHECK:STDOUT: %.loc7_55: = impl_self_witness %U.loc7_21.2, @Ptr [symbolic = %.loc7_55 (constants.%.f8f)] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.5a1)] // CHECK:STDOUT: @@ -1392,7 +1370,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: final impl: %U.ref.loc7_29 as %Ptr.ref { // CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.5a1)] -// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_38 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: extend %Ptr.ref @@ -1453,7 +1431,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%U.67d) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.3a0 // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d -// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1 +// CHECK:STDOUT: %ptr.loc7_38 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774 // CHECK:STDOUT: %.loc7_55 => constants.%.f8f // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.5a1 @@ -1470,7 +1448,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%T.as_type.468) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.3a0 // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.as_type.468 -// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.ac4 +// CHECK:STDOUT: %ptr.loc7_38 => constants.%ptr.ac4 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.c27 // CHECK:STDOUT: %.loc7_55 => constants.%.d24 // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.a83 @@ -1576,14 +1554,14 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: %.loc7_44: 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.loc7_44.1: type = impl_witness_access constants.%.c6b, element0 [symbolic_self = constants.%impl.elem0.949] -// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = %U.loc7_21.2 (constants.%U.67d)] -// CHECK:STDOUT: %ptr.loc7_53.1: type = ptr_type %U.ref.loc7_52 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %U.ref.loc7_52: type = name_ref U, %U.loc7_21.1 [symbolic = constants.%U.67d] +// CHECK:STDOUT: %ptr.loc7_53: type = ptr_type %U.ref.loc7_52 [symbolic = constants.%ptr.e8f8f9.1] +// CHECK:STDOUT: %rewrite.loc7_50.1 = requirement_rewrite %impl.elem0.loc7_44.1, %ptr.loc7_53 [concrete] // CHECK:STDOUT: %impl.elem0.loc7_44.2: type = impl_witness_access constants.%.51f, element0 [symbolic_self = constants.%impl.elem0.406] -// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53 [concrete] // CHECK:STDOUT: %.loc7_38: type = where_expr [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Ptr.ref [concrete] -// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53.1 [concrete] +// CHECK:STDOUT: %rewrite.loc7_50.2 = requirement_rewrite %impl.elem0.loc7_44.2, %ptr.loc7_53 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc7_23.1: type = splice_block %.loc7_23.2 [concrete = type] { // CHECK:STDOUT: %.Self.frozen.loc7_21: type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.e58] @@ -1641,8 +1619,8 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: generic final impl @U.as.Ptr.impl(%U.loc7_21.1: type) { // CHECK:STDOUT: %U.patt.loc7_21.2: %pattern_type.9a5 = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc7_21.2 (constants.%U.patt.3a0)] // CHECK:STDOUT: %U.loc7_21.2: type = symbolic_binding U, 0 [symbolic = %U.loc7_21.2 (constants.%U.67d)] -// CHECK:STDOUT: %ptr.loc7_53.2: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] -// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_53.2> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] +// CHECK:STDOUT: %ptr.loc7_38: type = ptr_type %U.loc7_21.2 [symbolic = %ptr.loc7_38 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %Ptr_where.type: type = facet_type <@Ptr where constants.%impl.elem0.406 = %ptr.loc7_38> [symbolic = %Ptr_where.type (constants.%Ptr_where.type.774)] // CHECK:STDOUT: %.loc7_55: = impl_self_witness %U.loc7_21.2, @Ptr [symbolic = %.loc7_55 (constants.%.f8f)] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(%U.loc7_21.2) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.5a1)] // CHECK:STDOUT: @@ -1651,7 +1629,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: final impl: %U.ref.loc7_29 as %Ptr.ref { // CHECK:STDOUT: %Ptr.impl_witness_table = impl_witness_table (%impl_witness_assoc_constant), @U.as.Ptr.impl [concrete] // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.1: = impl_witness %Ptr.impl_witness_table, @U.as.Ptr.impl(constants.%U.67d) [symbolic = %Ptr.impl_witness.loc7_55.2 (constants.%Ptr.impl_witness.5a1)] -// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_53.2 (constants.%ptr.e8f8f9.1)] +// CHECK:STDOUT: %impl_witness_assoc_constant: type = impl_witness_assoc_constant constants.%ptr.e8f8f9.1 [symbolic = %ptr.loc7_38 (constants.%ptr.e8f8f9.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: extend %Ptr.ref @@ -1712,7 +1690,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%U.67d) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.3a0 // CHECK:STDOUT: %U.loc7_21.2 => constants.%U.67d -// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.e8f8f9.1 +// CHECK:STDOUT: %ptr.loc7_38 => constants.%ptr.e8f8f9.1 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.774 // CHECK:STDOUT: %.loc7_55 => constants.%.f8f // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.5a1 @@ -1725,7 +1703,7 @@ fn F[T: Ptr](var t: T) -> T.(Ptr.Type) { // CHECK:STDOUT: specific @U.as.Ptr.impl(constants.%T.as_type.468) { // CHECK:STDOUT: %U.patt.loc7_21.2 => constants.%U.patt.3a0 // CHECK:STDOUT: %U.loc7_21.2 => constants.%T.as_type.468 -// CHECK:STDOUT: %ptr.loc7_53.2 => constants.%ptr.ac4 +// CHECK:STDOUT: %ptr.loc7_38 => constants.%ptr.ac4 // CHECK:STDOUT: %Ptr_where.type => constants.%Ptr_where.type.c27 // CHECK:STDOUT: %.loc7_55 => constants.%.d24 // CHECK:STDOUT: %Ptr.impl_witness.loc7_55.2 => constants.%Ptr.impl_witness.a83 diff --git a/toolchain/check/testdata/interface/observe.carbon b/toolchain/check/testdata/interface/observe.carbon index 6ae82cb4dddb..4677cb50fb45 100644 --- a/toolchain/check/testdata/interface/observe.carbon +++ b/toolchain/check/testdata/interface/observe.carbon @@ -525,10 +525,10 @@ fn F[W: A, X: I(W)](x: X) { // CHECK:STDOUT: %c: @Transitive.WithSelf.TakesC.%as_type (%as_type.95b) = wrapper_binding c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc4: %Transitive.assoc_type = assoc_entity element4, %Transitive.WithSelf.TakesC.decl [concrete = constants.%assoc4] -// CHECK:STDOUT: %impl.elem0.loc16: %facet_type.6ce = impl_witness_access constants.%Transitive.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc10 (constants.%impl.elem0)] -// CHECK:STDOUT: %A.ref: %facet_type.6ce = name_ref A, %impl.elem0.loc16 [symbolic = %impl.elem0.loc10 (constants.%impl.elem0)] -// CHECK:STDOUT: %impl.elem1.loc16: %facet_type.40a = impl_witness_access constants.%Transitive.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc11 (constants.%impl.elem1)] -// CHECK:STDOUT: %B.ref: %facet_type.40a = name_ref B, %impl.elem1.loc16 [symbolic = %impl.elem1.loc11 (constants.%impl.elem1)] +// CHECK:STDOUT: %impl.elem0.loc16_11.1: %facet_type.6ce = impl_witness_access constants.%Transitive.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_11.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %A.ref: %facet_type.6ce = name_ref A, %impl.elem0.loc16_11.1 [symbolic = %impl.elem0.loc16_11.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem1.loc16_16.1: %facet_type.40a = impl_witness_access constants.%Transitive.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc16_16.2 (constants.%impl.elem1)] +// CHECK:STDOUT: %B.ref: %facet_type.40a = name_ref B, %impl.elem1.loc16_16.1 [symbolic = %impl.elem1.loc16_16.2 (constants.%impl.elem1)] // CHECK:STDOUT: %B.as_type.loc16_16.1: type = facet_access_type %B.ref [symbolic = %as_type.loc16_16 (constants.%as_type.a97)] // CHECK:STDOUT: %.loc16_16.1: type = converted %B.ref, %B.as_type.loc16_16.1 [symbolic = %as_type.loc16_16 (constants.%as_type.a97)] // CHECK:STDOUT: %A.as_type: type = facet_access_type %A.ref [symbolic = %as_type.loc16_11 (constants.%as_type.e89)] @@ -838,7 +838,7 @@ fn F[W: A, X: I(W)](x: X) { // CHECK:STDOUT: %.Self.frozen.loc9_17: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.f7e] // CHECK:STDOUT: %base_facet_type.loc9_17 = requirement_base_facet_type %B.ref [concrete] // CHECK:STDOUT: %.Self.ref.loc9_23.1: %B.type = name_ref .Self, %.Self.frozen.loc9_17 [symbolic_self = constants.%.Self.frozen.f7e] -// CHECK:STDOUT: %T.ref.loc9: %A.type = name_ref T, %T.loc9_7.2 [symbolic = %T.loc9_7.1 (constants.%T)] +// CHECK:STDOUT: %T.ref.loc9: %A.type = name_ref T, %T.loc9_7.2 [symbolic = constants.%T] // CHECK:STDOUT: %equiv.loc9_29.1 = requirement_equivalent %.Self.ref.loc9_23.1, %T.ref.loc9 [concrete] // CHECK:STDOUT: %.Self.loc9_17: %B.type = symbolic_binding .Self [symbolic_self = constants.%.Self.263] // CHECK:STDOUT: %.Self.ref.loc9_23.2: %B.type = name_ref .Self, %.Self.loc9_17 [symbolic_self = constants.%.Self.263] @@ -855,7 +855,7 @@ fn F[W: A, X: I(W)](x: X) { // CHECK:STDOUT: %.Self.frozen.loc9_40: %C.type = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.8d7] // CHECK:STDOUT: %base_facet_type.loc9_40 = requirement_base_facet_type %C.ref [concrete] // CHECK:STDOUT: %.Self.ref.loc9_46.1: %C.type = name_ref .Self, %.Self.frozen.loc9_40 [symbolic_self = constants.%.Self.frozen.8d7] -// CHECK:STDOUT: %U.ref.loc9: %B_where.type = name_ref U, %U.loc9_13.2 [symbolic = %U.loc9_13.1 (constants.%U)] +// CHECK:STDOUT: %U.ref.loc9: %B_where.type = name_ref U, %U.loc9_13.2 [symbolic = constants.%U] // CHECK:STDOUT: %equiv.loc9_52.1 = requirement_equivalent %.Self.ref.loc9_46.1, %U.ref.loc9 [concrete] // CHECK:STDOUT: %.Self.loc9_40: %C.type = symbolic_binding .Self [symbolic_self = constants.%.Self.a25] // CHECK:STDOUT: %.Self.ref.loc9_46.2: %C.type = name_ref .Self, %.Self.loc9_40 [symbolic_self = constants.%.Self.a25] @@ -1106,8 +1106,8 @@ fn F[W: A, X: I(W)](x: X) { // CHECK:STDOUT: %assoc3.loc12_24.1: @I.WithSelf.%I.assoc_type (%I.assoc_type) = assoc_entity element3, %I.WithSelf.TakesT.decl [symbolic = %assoc3.loc12_24.2 (constants.%assoc3)] // CHECK:STDOUT: %.loc14_11.1: %A.type = specific_constant @I.%T.loc7_14.2, @I(constants.%T) [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.ref: %A.type = name_ref T, %.loc14_11.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %impl.elem0.loc14: %facet_type.dee = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9 (constants.%impl.elem0)] -// CHECK:STDOUT: %U.ref: %facet_type.dee = name_ref U, %impl.elem0.loc14 [symbolic = %impl.elem0.loc9 (constants.%impl.elem0)] +// CHECK:STDOUT: %impl.elem0.loc14_16.1: %facet_type.dee = impl_witness_access constants.%I.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_16.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %U.ref: %facet_type.dee = name_ref U, %impl.elem0.loc14_16.1 [symbolic = %impl.elem0.loc14_16.2 (constants.%impl.elem0)] // CHECK:STDOUT: %U.as_type.loc14_16.1: type = facet_access_type %U.ref [symbolic = %as_type.loc14_16 (constants.%as_type.a64)] // CHECK:STDOUT: %.loc14_16.1: type = converted %U.ref, %U.as_type.loc14_16.1 [symbolic = %as_type.loc14_16 (constants.%as_type.a64)] // CHECK:STDOUT: %T.as_type.loc14_11.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc14_11.2 (constants.%T.as_type)] diff --git a/toolchain/check/testdata/interface/require.carbon b/toolchain/check/testdata/interface/require.carbon index 07c2b682246b..18867bb07f64 100644 --- a/toolchain/check/testdata/interface/require.carbon +++ b/toolchain/check/testdata/interface/require.carbon @@ -864,9 +864,9 @@ interface Z(T: 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.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: %Self.ref: %Z.type = name_ref Self, @Z.%Self [symbolic = constants.%Self.cb6] +// CHECK:STDOUT: %Self.as_type.loc10_31: type = facet_access_type %Self.ref [symbolic = constants.%Self.as_type] +// CHECK:STDOUT: %.loc10_31: type = converted %Self.ref, %Self.as_type.loc10_31 [symbolic = 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] diff --git a/toolchain/check/testdata/interop/cpp/operators/arithmetic_operators.carbon b/toolchain/check/testdata/interop/cpp/operators/arithmetic_operators.carbon index d5269197c7e0..8c3946726dd0 100644 --- a/toolchain/check/testdata/interop/cpp/operators/arithmetic_operators.carbon +++ b/toolchain/check/testdata/interop/cpp/operators/arithmetic_operators.carbon @@ -330,12 +330,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.4f5: type = facet_type <@AddWith.1, @AddWith.1(%U.as_type.0bd) & @Destroy> [symbolic] // CHECK:STDOUT: %.Self.frozen.136: %facet_type.4f5 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %AddWith.assoc_type.71f: type = assoc_entity_type @AddWith.1, @AddWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %assoc0.155: %AddWith.assoc_type.71f = assoc_entity element0, imports.%Core.import_ref.91f [symbolic] // CHECK:STDOUT: %assoc1.f40: %AddWith.assoc_type.71f = assoc_entity element1, imports.%Core.import_ref.8ad [symbolic] -// CHECK:STDOUT: %require_complete.528878.1: = require_complete_type %facet_type.4f5 [symbolic] -// CHECK:STDOUT: %.Self.frozen.as_type.034: type = facet_access_type %.Self.frozen.136 [symbolic] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.0f3: = lookup_impl_witness %.Self.frozen.136, @AddWith.1, @AddWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %impl.elem0.1cd: type = impl_witness_access %AddWith.lookup_impl_witness.0f3, element0 [symbolic] // CHECK:STDOUT: %Result.as_type: type = facet_access_type %Result [symbolic] // CHECK:STDOUT: %.Self.354: %facet_type.4f5 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %AddWith.lookup_impl_witness.ab5: = lookup_impl_witness %.Self.354, @AddWith.1, @AddWith.1(%U.as_type.0bd) [symbolic] @@ -373,12 +368,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.769: type = facet_type <@SubWith.1, @SubWith.1(%U.as_type.0bd) & @Destroy> [symbolic] // CHECK:STDOUT: %.Self.frozen.b13: %facet_type.769 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %SubWith.assoc_type.5f0: type = assoc_entity_type @SubWith.1, @SubWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %assoc0.a5d: %SubWith.assoc_type.5f0 = assoc_entity element0, imports.%Core.import_ref.190 [symbolic] // CHECK:STDOUT: %assoc1.a86: %SubWith.assoc_type.5f0 = assoc_entity element1, imports.%Core.import_ref.2f4 [symbolic] -// CHECK:STDOUT: %require_complete.49f499.1: = require_complete_type %facet_type.769 [symbolic] -// CHECK:STDOUT: %.Self.frozen.as_type.d1e: type = facet_access_type %.Self.frozen.b13 [symbolic] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.fe8: = lookup_impl_witness %.Self.frozen.b13, @SubWith.1, @SubWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %impl.elem0.7da: type = impl_witness_access %SubWith.lookup_impl_witness.fe8, element0 [symbolic] // CHECK:STDOUT: %.Self.4de: %facet_type.769 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %SubWith.lookup_impl_witness.354: = lookup_impl_witness %.Self.4de, @SubWith.1, @SubWith.1(%U.as_type.0bd) [symbolic] // CHECK:STDOUT: %impl.elem0.3dc: type = impl_witness_access %SubWith.lookup_impl_witness.354, element0 [symbolic] @@ -407,12 +397,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.b0b: type = facet_type <@MulWith.1, @MulWith.1(%U.as_type.0bd) & @Destroy> [symbolic] // CHECK:STDOUT: %.Self.frozen.a62: %facet_type.b0b = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %MulWith.assoc_type.2e5: type = assoc_entity_type @MulWith.1, @MulWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %assoc0.e89: %MulWith.assoc_type.2e5 = assoc_entity element0, imports.%Core.import_ref.59c [symbolic] // CHECK:STDOUT: %assoc1.4eb: %MulWith.assoc_type.2e5 = assoc_entity element1, imports.%Core.import_ref.fc2 [symbolic] -// CHECK:STDOUT: %require_complete.8389d3.1: = require_complete_type %facet_type.b0b [symbolic] -// CHECK:STDOUT: %.Self.frozen.as_type.bd3: type = facet_access_type %.Self.frozen.a62 [symbolic] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.136: = lookup_impl_witness %.Self.frozen.a62, @MulWith.1, @MulWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %impl.elem0.16c: type = impl_witness_access %MulWith.lookup_impl_witness.136, element0 [symbolic] // CHECK:STDOUT: %.Self.a44: %facet_type.b0b = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %MulWith.lookup_impl_witness.ced: = lookup_impl_witness %.Self.a44, @MulWith.1, @MulWith.1(%U.as_type.0bd) [symbolic] // CHECK:STDOUT: %impl.elem0.0e8: type = impl_witness_access %MulWith.lookup_impl_witness.ced, element0 [symbolic] @@ -441,12 +426,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.71d: type = facet_type <@DivWith.1, @DivWith.1(%U.as_type.0bd) & @Destroy> [symbolic] // CHECK:STDOUT: %.Self.frozen.575: %facet_type.71d = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %DivWith.assoc_type.e65: type = assoc_entity_type @DivWith.1, @DivWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %assoc0.48a: %DivWith.assoc_type.e65 = assoc_entity element0, imports.%Core.import_ref.dee [symbolic] // CHECK:STDOUT: %assoc1.ed1: %DivWith.assoc_type.e65 = assoc_entity element1, imports.%Core.import_ref.f2f [symbolic] -// CHECK:STDOUT: %require_complete.c4013f.1: = require_complete_type %facet_type.71d [symbolic] -// CHECK:STDOUT: %.Self.frozen.as_type.a77: type = facet_access_type %.Self.frozen.575 [symbolic] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.d5d: = lookup_impl_witness %.Self.frozen.575, @DivWith.1, @DivWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %impl.elem0.e77: type = impl_witness_access %DivWith.lookup_impl_witness.d5d, element0 [symbolic] // CHECK:STDOUT: %.Self.c58: %facet_type.71d = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %DivWith.lookup_impl_witness.f1d: = lookup_impl_witness %.Self.c58, @DivWith.1, @DivWith.1(%U.as_type.0bd) [symbolic] // CHECK:STDOUT: %impl.elem0.af2: type = impl_witness_access %DivWith.lookup_impl_witness.f1d, element0 [symbolic] @@ -475,12 +455,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.68a: type = facet_type <@ModWith.1, @ModWith.1(%U.as_type.0bd) & @Destroy> [symbolic] // CHECK:STDOUT: %.Self.frozen.e0d: %facet_type.68a = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %ModWith.assoc_type.9c3: type = assoc_entity_type @ModWith.1, @ModWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %assoc0.cb9: %ModWith.assoc_type.9c3 = assoc_entity element0, imports.%Core.import_ref.61a [symbolic] // CHECK:STDOUT: %assoc1.3d6: %ModWith.assoc_type.9c3 = assoc_entity element1, imports.%Core.import_ref.9f8f [symbolic] -// CHECK:STDOUT: %require_complete.312803.1: = require_complete_type %facet_type.68a [symbolic] -// CHECK:STDOUT: %.Self.frozen.as_type.01e: type = facet_access_type %.Self.frozen.e0d [symbolic] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.4ec: = lookup_impl_witness %.Self.frozen.e0d, @ModWith.1, @ModWith.1(%U.as_type.0bd) [symbolic] -// CHECK:STDOUT: %impl.elem0.671: type = impl_witness_access %ModWith.lookup_impl_witness.4ec, element0 [symbolic] // CHECK:STDOUT: %.Self.2c1: %facet_type.68a = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %ModWith.lookup_impl_witness.930: = lookup_impl_witness %.Self.2c1, @ModWith.1, @ModWith.1(%U.as_type.0bd) [symbolic] // CHECK:STDOUT: %impl.elem0.e6d: type = impl_witness_access %ModWith.lookup_impl_witness.930, element0 [symbolic] @@ -536,7 +511,6 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DestroyImpl.impl_witness.dff: = impl_witness imports.%DestroyImpl.impl_witness_table, @T.as_type.as.DestroyImpl.impl(%SubobjectDestroy.facet.c5e) [concrete] // CHECK:STDOUT: %AddWith.type.e4b: type = facet_type <@AddWith.1, @AddWith.1(%Int16)> [concrete] // CHECK:STDOUT: %AddWith.assoc_type.86e: type = assoc_entity_type @AddWith.1, @AddWith.1(%Int16) [concrete] -// CHECK:STDOUT: %assoc0.30c: %AddWith.assoc_type.86e = assoc_entity element0, imports.%Core.import_ref.91f [concrete] // CHECK:STDOUT: %assoc1.9bf: %AddWith.assoc_type.86e = assoc_entity element1, imports.%Core.import_ref.8ad [concrete] // CHECK:STDOUT: %Op.type.442b68.1: type = fn_type @Op.1 [concrete] // CHECK:STDOUT: %Op.72717c.1: %Op.type.442b68.1 = struct_value () [concrete] @@ -544,10 +518,6 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %custom_witness.cba: = custom_witness (%Int16, %Op.72717c.1), @AddWith.1, @AddWith.1(%Int16) [concrete] // CHECK:STDOUT: %facet_value.b07: %facet_type.5b8 = facet_value %i16, (%DestroyImpl.impl_witness.dff, %custom_witness.b80, %custom_witness.cba) [concrete] // CHECK:STDOUT: %.Self.frozen.ea9: %facet_type.e4b = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.f37bc8.1: = complete_type_witness %facet_type.e4b [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.ceb: type = facet_access_type %.Self.frozen.ea9 [symbolic_self] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.e18: = lookup_impl_witness %.Self.frozen.ea9, @AddWith.1, @AddWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.de3: type = impl_witness_access %AddWith.lookup_impl_witness.e18, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.f83: type = pattern_type %facet_type.5b8 [concrete] // CHECK:STDOUT: %T.patt.056: %pattern_type.f83 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %result.param_patt.be6: %pattern_type.785 = value_param_pattern [concrete] @@ -562,17 +532,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.5db: type = facet_type <@SubWith.1, @SubWith.1(%Int16) & @Destroy where %impl.elem0.22a = %Int16> [concrete] // CHECK:STDOUT: %SubWith.type.68d: type = facet_type <@SubWith.1, @SubWith.1(%Int16)> [concrete] // CHECK:STDOUT: %SubWith.assoc_type.dd6: type = assoc_entity_type @SubWith.1, @SubWith.1(%Int16) [concrete] -// CHECK:STDOUT: %assoc0.dfb: %SubWith.assoc_type.dd6 = assoc_entity element0, imports.%Core.import_ref.190 [concrete] // CHECK:STDOUT: %assoc1.ada: %SubWith.assoc_type.dd6 = assoc_entity element1, imports.%Core.import_ref.2f4 [concrete] // 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.354: = custom_witness (%Int16, %Op.72717c.2), @SubWith.1, @SubWith.1(%Int16) [concrete] // CHECK:STDOUT: %facet_value.ca4: %facet_type.5db = facet_value %i16, (%DestroyImpl.impl_witness.dff, %custom_witness.b80, %custom_witness.354) [concrete] // CHECK:STDOUT: %.Self.frozen.0c9: %facet_type.68d = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.8a2f63.1: = complete_type_witness %facet_type.68d [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.471: type = facet_access_type %.Self.frozen.0c9 [symbolic_self] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.379: = lookup_impl_witness %.Self.frozen.0c9, @SubWith.1, @SubWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.e78: type = impl_witness_access %SubWith.lookup_impl_witness.379, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.7bf: type = pattern_type %facet_type.5db [concrete] // CHECK:STDOUT: %T.patt.f08: %pattern_type.7bf = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.f65: type = facet_type <@MulWith.1, @MulWith.1(%Int16) & @Destroy> [concrete] @@ -582,17 +547,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.1c9: type = facet_type <@MulWith.1, @MulWith.1(%Int16) & @Destroy where %impl.elem0.088 = %Int16> [concrete] // CHECK:STDOUT: %MulWith.type.f65: type = facet_type <@MulWith.1, @MulWith.1(%Int16)> [concrete] // CHECK:STDOUT: %MulWith.assoc_type.4c3: type = assoc_entity_type @MulWith.1, @MulWith.1(%Int16) [concrete] -// CHECK:STDOUT: %assoc0.6ec: %MulWith.assoc_type.4c3 = assoc_entity element0, imports.%Core.import_ref.59c [concrete] // CHECK:STDOUT: %assoc1.b14: %MulWith.assoc_type.4c3 = assoc_entity element1, imports.%Core.import_ref.fc2 [concrete] // 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.3c3: = custom_witness (%Int16, %Op.72717c.3), @MulWith.1, @MulWith.1(%Int16) [concrete] // CHECK:STDOUT: %facet_value.3e5: %facet_type.1c9 = facet_value %i16, (%DestroyImpl.impl_witness.dff, %custom_witness.b80, %custom_witness.3c3) [concrete] // CHECK:STDOUT: %.Self.frozen.aec: %facet_type.f65 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.8c670c.1: = complete_type_witness %facet_type.f65 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.34d: type = facet_access_type %.Self.frozen.aec [symbolic_self] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.94b: = lookup_impl_witness %.Self.frozen.aec, @MulWith.1, @MulWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.212: type = impl_witness_access %MulWith.lookup_impl_witness.94b, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.2f6: type = pattern_type %facet_type.1c9 [concrete] // CHECK:STDOUT: %T.patt.e8a: %pattern_type.2f6 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.b8a: type = facet_type <@DivWith.1, @DivWith.1(%Int16) & @Destroy> [concrete] @@ -602,17 +562,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.ee9: type = facet_type <@DivWith.1, @DivWith.1(%Int16) & @Destroy where %impl.elem0.6cf = %Int16> [concrete] // CHECK:STDOUT: %DivWith.type.b8a: type = facet_type <@DivWith.1, @DivWith.1(%Int16)> [concrete] // CHECK:STDOUT: %DivWith.assoc_type.712: type = assoc_entity_type @DivWith.1, @DivWith.1(%Int16) [concrete] -// CHECK:STDOUT: %assoc0.99c: %DivWith.assoc_type.712 = assoc_entity element0, imports.%Core.import_ref.dee [concrete] // CHECK:STDOUT: %assoc1.fb6: %DivWith.assoc_type.712 = assoc_entity element1, imports.%Core.import_ref.f2f [concrete] // 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.8d0: = custom_witness (%Int16, %Op.72717c.4), @DivWith.1, @DivWith.1(%Int16) [concrete] // CHECK:STDOUT: %facet_value.318: %facet_type.ee9 = facet_value %i16, (%DestroyImpl.impl_witness.dff, %custom_witness.b80, %custom_witness.8d0) [concrete] // CHECK:STDOUT: %.Self.frozen.ff8: %facet_type.b8a = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.d99d66.1: = complete_type_witness %facet_type.b8a [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.2d9: type = facet_access_type %.Self.frozen.ff8 [symbolic_self] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.483: = lookup_impl_witness %.Self.frozen.ff8, @DivWith.1, @DivWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.f9d: type = impl_witness_access %DivWith.lookup_impl_witness.483, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.575: type = pattern_type %facet_type.ee9 [concrete] // CHECK:STDOUT: %T.patt.257: %pattern_type.575 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.c67: type = facet_type <@ModWith.1, @ModWith.1(%Int16) & @Destroy> [concrete] @@ -622,17 +577,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.fe4: type = facet_type <@ModWith.1, @ModWith.1(%Int16) & @Destroy where %impl.elem0.14c = %Int16> [concrete] // CHECK:STDOUT: %ModWith.type.c67: type = facet_type <@ModWith.1, @ModWith.1(%Int16)> [concrete] // CHECK:STDOUT: %ModWith.assoc_type.5f6: type = assoc_entity_type @ModWith.1, @ModWith.1(%Int16) [concrete] -// CHECK:STDOUT: %assoc0.f04: %ModWith.assoc_type.5f6 = assoc_entity element0, imports.%Core.import_ref.61a [concrete] // CHECK:STDOUT: %assoc1.d19: %ModWith.assoc_type.5f6 = assoc_entity element1, imports.%Core.import_ref.9f8f [concrete] // 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.169: = custom_witness (%Int16, %Op.72717c.5), @ModWith.1, @ModWith.1(%Int16) [concrete] // CHECK:STDOUT: %facet_value.425: %facet_type.fe4 = facet_value %i16, (%DestroyImpl.impl_witness.dff, %custom_witness.b80, %custom_witness.169) [concrete] // CHECK:STDOUT: %.Self.frozen.13f: %facet_type.c67 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.7d80e1.1: = complete_type_witness %facet_type.c67 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.cb4: type = facet_access_type %.Self.frozen.13f [symbolic_self] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.0af: = lookup_impl_witness %.Self.frozen.13f, @ModWith.1, @ModWith.1(%Int16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.d91: type = impl_witness_access %ModWith.lookup_impl_witness.0af, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.330: type = pattern_type %facet_type.fe4 [concrete] // CHECK:STDOUT: %T.patt.5c0: %pattern_type.330 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.2ed: type = facet_type <@AddWith.1, @AddWith.1(%i16) & @Destroy> [concrete] @@ -642,17 +592,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.9dd: type = facet_type <@AddWith.1, @AddWith.1(%i16) & @Destroy where %impl.elem0.025 = %Int16> [concrete] // CHECK:STDOUT: %AddWith.type.2ed: type = facet_type <@AddWith.1, @AddWith.1(%i16)> [concrete] // CHECK:STDOUT: %AddWith.assoc_type.18f: type = assoc_entity_type @AddWith.1, @AddWith.1(%i16) [concrete] -// CHECK:STDOUT: %assoc0.b7d: %AddWith.assoc_type.18f = assoc_entity element0, imports.%Core.import_ref.91f [concrete] // CHECK:STDOUT: %assoc1.e08: %AddWith.assoc_type.18f = assoc_entity element1, imports.%Core.import_ref.8ad [concrete] // 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.b79: = custom_witness (%Int16, %Int16.Op.4dca31.3), @AddWith.1, @AddWith.1(%i16) [concrete] // CHECK:STDOUT: %facet_value.936: %facet_type.9dd = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.b79) [concrete] // CHECK:STDOUT: %.Self.frozen.17a: %facet_type.2ed = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.32de8b.1: = complete_type_witness %facet_type.2ed [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.8c1: type = facet_access_type %.Self.frozen.17a [symbolic_self] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.03c: = lookup_impl_witness %.Self.frozen.17a, @AddWith.1, @AddWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.719: type = impl_witness_access %AddWith.lookup_impl_witness.03c, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.b6f: type = pattern_type %facet_type.9dd [concrete] // CHECK:STDOUT: %T.patt.b9b: %pattern_type.b6f = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %x.param_patt.3b0: %pattern_type.785 = value_param_pattern [concrete] @@ -666,17 +611,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.1a3: type = facet_type <@SubWith.1, @SubWith.1(%i16) & @Destroy where %impl.elem0.1b2 = %Int16> [concrete] // CHECK:STDOUT: %SubWith.type.606: type = facet_type <@SubWith.1, @SubWith.1(%i16)> [concrete] // CHECK:STDOUT: %SubWith.assoc_type.9c3: type = assoc_entity_type @SubWith.1, @SubWith.1(%i16) [concrete] -// CHECK:STDOUT: %assoc0.f66: %SubWith.assoc_type.9c3 = assoc_entity element0, imports.%Core.import_ref.190 [concrete] // CHECK:STDOUT: %assoc1.144: %SubWith.assoc_type.9c3 = assoc_entity element1, imports.%Core.import_ref.2f4 [concrete] // 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.1e8: = custom_witness (%Int16, %Int16.Op.4dca31.4), @SubWith.1, @SubWith.1(%i16) [concrete] // CHECK:STDOUT: %facet_value.cc0: %facet_type.1a3 = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.1e8) [concrete] // CHECK:STDOUT: %.Self.frozen.6eb: %facet_type.606 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.75c188.1: = complete_type_witness %facet_type.606 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.fe6: type = facet_access_type %.Self.frozen.6eb [symbolic_self] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.183: = lookup_impl_witness %.Self.frozen.6eb, @SubWith.1, @SubWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.cc9: type = impl_witness_access %SubWith.lookup_impl_witness.183, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.8ce: type = pattern_type %facet_type.1a3 [concrete] // CHECK:STDOUT: %T.patt.88b: %pattern_type.8ce = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.1e2: type = facet_type <@MulWith.1, @MulWith.1(%i16) & @Destroy> [concrete] @@ -686,17 +626,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.26b: type = facet_type <@MulWith.1, @MulWith.1(%i16) & @Destroy where %impl.elem0.0df = %Int16> [concrete] // CHECK:STDOUT: %MulWith.type.1e2: type = facet_type <@MulWith.1, @MulWith.1(%i16)> [concrete] // CHECK:STDOUT: %MulWith.assoc_type.34c: type = assoc_entity_type @MulWith.1, @MulWith.1(%i16) [concrete] -// CHECK:STDOUT: %assoc0.2d4: %MulWith.assoc_type.34c = assoc_entity element0, imports.%Core.import_ref.59c [concrete] // CHECK:STDOUT: %assoc1.635: %MulWith.assoc_type.34c = assoc_entity element1, imports.%Core.import_ref.fc2 [concrete] // 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.e2b: = custom_witness (%Int16, %Int16.Op.4dca31.5), @MulWith.1, @MulWith.1(%i16) [concrete] // CHECK:STDOUT: %facet_value.4ed: %facet_type.26b = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.e2b) [concrete] // CHECK:STDOUT: %.Self.frozen.a99: %facet_type.1e2 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.a7adcd.1: = complete_type_witness %facet_type.1e2 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.6f1: type = facet_access_type %.Self.frozen.a99 [symbolic_self] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.7ca: = lookup_impl_witness %.Self.frozen.a99, @MulWith.1, @MulWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.c79: type = impl_witness_access %MulWith.lookup_impl_witness.7ca, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.2a0: type = pattern_type %facet_type.26b [concrete] // CHECK:STDOUT: %T.patt.c4b: %pattern_type.2a0 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.45d: type = facet_type <@DivWith.1, @DivWith.1(%i16) & @Destroy> [concrete] @@ -706,17 +641,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.cb9: type = facet_type <@DivWith.1, @DivWith.1(%i16) & @Destroy where %impl.elem0.833 = %Int16> [concrete] // CHECK:STDOUT: %DivWith.type.45d: type = facet_type <@DivWith.1, @DivWith.1(%i16)> [concrete] // CHECK:STDOUT: %DivWith.assoc_type.5a4: type = assoc_entity_type @DivWith.1, @DivWith.1(%i16) [concrete] -// CHECK:STDOUT: %assoc0.156: %DivWith.assoc_type.5a4 = assoc_entity element0, imports.%Core.import_ref.dee [concrete] // CHECK:STDOUT: %assoc1.444: %DivWith.assoc_type.5a4 = assoc_entity element1, imports.%Core.import_ref.f2f [concrete] // 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.21db: = custom_witness (%Int16, %Int16.Op.4dca31.6), @DivWith.1, @DivWith.1(%i16) [concrete] // CHECK:STDOUT: %facet_value.69b: %facet_type.cb9 = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.21db) [concrete] // CHECK:STDOUT: %.Self.frozen.52f: %facet_type.45d = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.d57eaf.1: = complete_type_witness %facet_type.45d [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.8c0: type = facet_access_type %.Self.frozen.52f [symbolic_self] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.5df: = lookup_impl_witness %.Self.frozen.52f, @DivWith.1, @DivWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.967: type = impl_witness_access %DivWith.lookup_impl_witness.5df, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.264: type = pattern_type %facet_type.cb9 [concrete] // CHECK:STDOUT: %T.patt.19d: %pattern_type.264 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.104: type = facet_type <@ModWith.1, @ModWith.1(%i16) & @Destroy> [concrete] @@ -726,17 +656,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.70f: type = facet_type <@ModWith.1, @ModWith.1(%i16) & @Destroy where %impl.elem0.d83 = %Int16> [concrete] // CHECK:STDOUT: %ModWith.type.104: type = facet_type <@ModWith.1, @ModWith.1(%i16)> [concrete] // CHECK:STDOUT: %ModWith.assoc_type.0e9: type = assoc_entity_type @ModWith.1, @ModWith.1(%i16) [concrete] -// CHECK:STDOUT: %assoc0.92c: %ModWith.assoc_type.0e9 = assoc_entity element0, imports.%Core.import_ref.61a [concrete] // CHECK:STDOUT: %assoc1.870: %ModWith.assoc_type.0e9 = assoc_entity element1, imports.%Core.import_ref.9f8f [concrete] // 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.6dd: = custom_witness (%Int16, %Int16.Op.4dca31.7), @ModWith.1, @ModWith.1(%i16) [concrete] // CHECK:STDOUT: %facet_value.0fe: %facet_type.70f = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.6dd) [concrete] // CHECK:STDOUT: %.Self.frozen.b7c: %facet_type.104 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.4d792a.1: = complete_type_witness %facet_type.104 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.e20: type = facet_access_type %.Self.frozen.b7c [symbolic_self] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.a99: = lookup_impl_witness %.Self.frozen.b7c, @ModWith.1, @ModWith.1(%i16) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.b94: type = impl_witness_access %ModWith.lookup_impl_witness.a99, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.4c3: type = pattern_type %facet_type.70f [concrete] // CHECK:STDOUT: %T.patt.cf6: %pattern_type.4c3 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %Int32.Op.type.83af6e.1: type = fn_type @Int32.Op.1 [concrete] @@ -752,17 +677,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.bf5: type = facet_type <@AddWith.1, @AddWith.1(%Int32) & @Destroy where %impl.elem0.a74 = %Int32> [concrete] // CHECK:STDOUT: %AddWith.type.db7: type = facet_type <@AddWith.1, @AddWith.1(%Int32)> [concrete] // CHECK:STDOUT: %AddWith.assoc_type.be8: type = assoc_entity_type @AddWith.1, @AddWith.1(%Int32) [concrete] -// CHECK:STDOUT: %assoc0.31c: %AddWith.assoc_type.be8 = assoc_entity element0, imports.%Core.import_ref.91f [concrete] // CHECK:STDOUT: %assoc1.86c: %AddWith.assoc_type.be8 = assoc_entity element1, imports.%Core.import_ref.8ad [concrete] // 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.513476.1: = custom_witness (%Int32, %Int16.Op.4dca31.8), @AddWith.1, @AddWith.1(%Int32) [concrete] // CHECK:STDOUT: %facet_value.15a: %facet_type.bf5 = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.513476.1) [concrete] // CHECK:STDOUT: %.Self.frozen.bc4: %facet_type.db7 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.758ea8.1: = complete_type_witness %facet_type.db7 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.447: type = facet_access_type %.Self.frozen.bc4 [symbolic_self] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.a9e: = lookup_impl_witness %.Self.frozen.bc4, @AddWith.1, @AddWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.517: type = impl_witness_access %AddWith.lookup_impl_witness.a9e, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.eea: type = pattern_type %facet_type.bf5 [concrete] // CHECK:STDOUT: %T.patt.79b: %pattern_type.eea = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %result.param_patt.e81: %pattern_type.8b4 = value_param_pattern [concrete] @@ -777,17 +697,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.b03: type = facet_type <@SubWith.1, @SubWith.1(%Int32) & @Destroy where %impl.elem0.94c = %Int32> [concrete] // CHECK:STDOUT: %SubWith.type.120: type = facet_type <@SubWith.1, @SubWith.1(%Int32)> [concrete] // CHECK:STDOUT: %SubWith.assoc_type.dae: type = assoc_entity_type @SubWith.1, @SubWith.1(%Int32) [concrete] -// CHECK:STDOUT: %assoc0.fac: %SubWith.assoc_type.dae = assoc_entity element0, imports.%Core.import_ref.190 [concrete] // CHECK:STDOUT: %assoc1.147: %SubWith.assoc_type.dae = assoc_entity element1, imports.%Core.import_ref.2f4 [concrete] // 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.32cef1.1: = custom_witness (%Int32, %Int16.Op.4dca31.9), @SubWith.1, @SubWith.1(%Int32) [concrete] // CHECK:STDOUT: %facet_value.771: %facet_type.b03 = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.32cef1.1) [concrete] // CHECK:STDOUT: %.Self.frozen.faf: %facet_type.120 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.46ea3c.1: = complete_type_witness %facet_type.120 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.ea6: type = facet_access_type %.Self.frozen.faf [symbolic_self] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.c4f: = lookup_impl_witness %.Self.frozen.faf, @SubWith.1, @SubWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.b5a: type = impl_witness_access %SubWith.lookup_impl_witness.c4f, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.110: type = pattern_type %facet_type.b03 [concrete] // CHECK:STDOUT: %T.patt.e31: %pattern_type.110 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.d67b: type = facet_type <@MulWith.1, @MulWith.1(%Int32) & @Destroy> [concrete] @@ -797,17 +712,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.b52: type = facet_type <@MulWith.1, @MulWith.1(%Int32) & @Destroy where %impl.elem0.311 = %Int32> [concrete] // CHECK:STDOUT: %MulWith.type.d67: type = facet_type <@MulWith.1, @MulWith.1(%Int32)> [concrete] // CHECK:STDOUT: %MulWith.assoc_type.ab1: type = assoc_entity_type @MulWith.1, @MulWith.1(%Int32) [concrete] -// CHECK:STDOUT: %assoc0.d0a: %MulWith.assoc_type.ab1 = assoc_entity element0, imports.%Core.import_ref.59c [concrete] // CHECK:STDOUT: %assoc1.349: %MulWith.assoc_type.ab1 = assoc_entity element1, imports.%Core.import_ref.fc2 [concrete] // 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.3a0675.1: = custom_witness (%Int32, %Int16.Op.4dca31.10), @MulWith.1, @MulWith.1(%Int32) [concrete] // CHECK:STDOUT: %facet_value.294: %facet_type.b52 = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.3a0675.1) [concrete] // CHECK:STDOUT: %.Self.frozen.c7a: %facet_type.d67b = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.920626.1: = complete_type_witness %facet_type.d67b [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.c47: type = facet_access_type %.Self.frozen.c7a [symbolic_self] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.ab5: = lookup_impl_witness %.Self.frozen.c7a, @MulWith.1, @MulWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.6ef: type = impl_witness_access %MulWith.lookup_impl_witness.ab5, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.f70: type = pattern_type %facet_type.b52 [concrete] // CHECK:STDOUT: %T.patt.040: %pattern_type.f70 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.5a1: type = facet_type <@DivWith.1, @DivWith.1(%Int32) & @Destroy> [concrete] @@ -817,17 +727,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.f29: type = facet_type <@DivWith.1, @DivWith.1(%Int32) & @Destroy where %impl.elem0.437 = %Int32> [concrete] // CHECK:STDOUT: %DivWith.type.5a1: type = facet_type <@DivWith.1, @DivWith.1(%Int32)> [concrete] // CHECK:STDOUT: %DivWith.assoc_type.22f: type = assoc_entity_type @DivWith.1, @DivWith.1(%Int32) [concrete] -// CHECK:STDOUT: %assoc0.a9d: %DivWith.assoc_type.22f = assoc_entity element0, imports.%Core.import_ref.dee [concrete] // CHECK:STDOUT: %assoc1.004: %DivWith.assoc_type.22f = assoc_entity element1, imports.%Core.import_ref.f2f [concrete] // 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.c32685.1: = custom_witness (%Int32, %Int16.Op.4dca31.11), @DivWith.1, @DivWith.1(%Int32) [concrete] // CHECK:STDOUT: %facet_value.f37: %facet_type.f29 = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.c32685.1) [concrete] // CHECK:STDOUT: %.Self.frozen.057: %facet_type.5a1 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.348fba.1: = complete_type_witness %facet_type.5a1 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.cc3: type = facet_access_type %.Self.frozen.057 [symbolic_self] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.ca2: = lookup_impl_witness %.Self.frozen.057, @DivWith.1, @DivWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.14b: type = impl_witness_access %DivWith.lookup_impl_witness.ca2, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.3d3: type = pattern_type %facet_type.f29 [concrete] // CHECK:STDOUT: %T.patt.db7: %pattern_type.3d3 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.794: type = facet_type <@ModWith.1, @ModWith.1(%Int32) & @Destroy> [concrete] @@ -837,17 +742,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.3d9: type = facet_type <@ModWith.1, @ModWith.1(%Int32) & @Destroy where %impl.elem0.3bb = %Int32> [concrete] // CHECK:STDOUT: %ModWith.type.794: type = facet_type <@ModWith.1, @ModWith.1(%Int32)> [concrete] // CHECK:STDOUT: %ModWith.assoc_type.021: type = assoc_entity_type @ModWith.1, @ModWith.1(%Int32) [concrete] -// CHECK:STDOUT: %assoc0.310: %ModWith.assoc_type.021 = assoc_entity element0, imports.%Core.import_ref.61a [concrete] // CHECK:STDOUT: %assoc1.2eb: %ModWith.assoc_type.021 = assoc_entity element1, imports.%Core.import_ref.9f8f [concrete] // 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.994c75.1: = custom_witness (%Int32, %Int16.Op.4dca31.12), @ModWith.1, @ModWith.1(%Int32) [concrete] // CHECK:STDOUT: %facet_value.951: %facet_type.3d9 = facet_value %Int16, (%DestroyImpl.impl_witness.6b1, %custom_witness.5760f4.1, %custom_witness.994c75.1) [concrete] // CHECK:STDOUT: %.Self.frozen.813: %facet_type.794 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.cc95ce.1: = complete_type_witness %facet_type.794 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.f4a: type = facet_access_type %.Self.frozen.813 [symbolic_self] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.efb: = lookup_impl_witness %.Self.frozen.813, @ModWith.1, @ModWith.1(%Int32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.e83: type = impl_witness_access %ModWith.lookup_impl_witness.efb, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.f5f: type = pattern_type %facet_type.3d9 [concrete] // CHECK:STDOUT: %T.patt.27e: %pattern_type.f5f = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.177: type = facet_type <@AddWith.1, @AddWith.1(%Int16) & @Destroy where %impl.elem0.08e = %Int32> [concrete] @@ -922,17 +822,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %y.patt.069: %pattern_type.4aa = wrapper_binding_pattern y, %y.param_patt.a08 [concrete] // CHECK:STDOUT: %AddWith.type.1ff: type = facet_type <@AddWith.1, @AddWith.1(%Int64)> [concrete] // CHECK:STDOUT: %AddWith.assoc_type.97f: type = assoc_entity_type @AddWith.1, @AddWith.1(%Int64) [concrete] -// CHECK:STDOUT: %assoc0.f02: %AddWith.assoc_type.97f = assoc_entity element0, imports.%Core.import_ref.91f [concrete] // CHECK:STDOUT: %assoc1.a75: %AddWith.assoc_type.97f = assoc_entity element1, imports.%Core.import_ref.8ad [concrete] // 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.f2f: = custom_witness (%Int64, %Op.72717c.6), @AddWith.1, @AddWith.1(%Int64) [concrete] // CHECK:STDOUT: %facet_value.cb5: %facet_type.dab = facet_value %Int32, (%DestroyImpl.impl_witness.40d, %custom_witness.5760f4.2, %custom_witness.f2f) [concrete] // CHECK:STDOUT: %.Self.frozen.91a: %facet_type.1ff = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.57be9d.1: = complete_type_witness %facet_type.1ff [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.a1b: type = facet_access_type %.Self.frozen.91a [symbolic_self] -// CHECK:STDOUT: %AddWith.lookup_impl_witness.30a: = lookup_impl_witness %.Self.frozen.91a, @AddWith.1, @AddWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.b7d: type = impl_witness_access %AddWith.lookup_impl_witness.30a, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.652: type = pattern_type %facet_type.dab [concrete] // CHECK:STDOUT: %T.patt.cb1: %pattern_type.652 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %result.param_patt.1e1: %pattern_type.4aa = value_param_pattern [concrete] @@ -945,17 +840,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.d68: type = facet_type <@SubWith.1, @SubWith.1(%Int64) & @Destroy where %impl.elem0.ee1 = %Int64> [concrete] // CHECK:STDOUT: %SubWith.type.31c: type = facet_type <@SubWith.1, @SubWith.1(%Int64)> [concrete] // CHECK:STDOUT: %SubWith.assoc_type.4f8: type = assoc_entity_type @SubWith.1, @SubWith.1(%Int64) [concrete] -// CHECK:STDOUT: %assoc0.13b: %SubWith.assoc_type.4f8 = assoc_entity element0, imports.%Core.import_ref.190 [concrete] // CHECK:STDOUT: %assoc1.e70: %SubWith.assoc_type.4f8 = assoc_entity element1, imports.%Core.import_ref.2f4 [concrete] // 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.276: = custom_witness (%Int64, %Op.72717c.7), @SubWith.1, @SubWith.1(%Int64) [concrete] // CHECK:STDOUT: %facet_value.9c9: %facet_type.d68 = facet_value %Int32, (%DestroyImpl.impl_witness.40d, %custom_witness.5760f4.2, %custom_witness.276) [concrete] // CHECK:STDOUT: %.Self.frozen.c93: %facet_type.31c = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.cb55bb.1: = complete_type_witness %facet_type.31c [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.7cf: type = facet_access_type %.Self.frozen.c93 [symbolic_self] -// CHECK:STDOUT: %SubWith.lookup_impl_witness.52f: = lookup_impl_witness %.Self.frozen.c93, @SubWith.1, @SubWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.5f9: type = impl_witness_access %SubWith.lookup_impl_witness.52f, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.ea4: type = pattern_type %facet_type.d68 [concrete] // CHECK:STDOUT: %T.patt.25e: %pattern_type.ea4 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.661: type = facet_type <@MulWith.1, @MulWith.1(%Int64) & @Destroy> [concrete] @@ -965,17 +855,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.a2e: type = facet_type <@MulWith.1, @MulWith.1(%Int64) & @Destroy where %impl.elem0.4c1 = %Int64> [concrete] // CHECK:STDOUT: %MulWith.type.661: type = facet_type <@MulWith.1, @MulWith.1(%Int64)> [concrete] // CHECK:STDOUT: %MulWith.assoc_type.940: type = assoc_entity_type @MulWith.1, @MulWith.1(%Int64) [concrete] -// CHECK:STDOUT: %assoc0.9d9: %MulWith.assoc_type.940 = assoc_entity element0, imports.%Core.import_ref.59c [concrete] // CHECK:STDOUT: %assoc1.b22: %MulWith.assoc_type.940 = assoc_entity element1, imports.%Core.import_ref.fc2 [concrete] // 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.8e4: = custom_witness (%Int64, %Op.72717c.8), @MulWith.1, @MulWith.1(%Int64) [concrete] // CHECK:STDOUT: %facet_value.637: %facet_type.a2e = facet_value %Int32, (%DestroyImpl.impl_witness.40d, %custom_witness.5760f4.2, %custom_witness.8e4) [concrete] // CHECK:STDOUT: %.Self.frozen.5fe: %facet_type.661 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.0a6803.1: = complete_type_witness %facet_type.661 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.e09: type = facet_access_type %.Self.frozen.5fe [symbolic_self] -// CHECK:STDOUT: %MulWith.lookup_impl_witness.6c6: = lookup_impl_witness %.Self.frozen.5fe, @MulWith.1, @MulWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.731: type = impl_witness_access %MulWith.lookup_impl_witness.6c6, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.216: type = pattern_type %facet_type.a2e [concrete] // CHECK:STDOUT: %T.patt.ec6: %pattern_type.216 = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.dd8: type = facet_type <@DivWith.1, @DivWith.1(%Int64) & @Destroy> [concrete] @@ -985,17 +870,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.89f: type = facet_type <@DivWith.1, @DivWith.1(%Int64) & @Destroy where %impl.elem0.d16 = %Int64> [concrete] // CHECK:STDOUT: %DivWith.type.dd8: type = facet_type <@DivWith.1, @DivWith.1(%Int64)> [concrete] // CHECK:STDOUT: %DivWith.assoc_type.2dc: type = assoc_entity_type @DivWith.1, @DivWith.1(%Int64) [concrete] -// CHECK:STDOUT: %assoc0.e8b: %DivWith.assoc_type.2dc = assoc_entity element0, imports.%Core.import_ref.dee [concrete] // CHECK:STDOUT: %assoc1.8b9: %DivWith.assoc_type.2dc = assoc_entity element1, imports.%Core.import_ref.f2f [concrete] // 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.099: = custom_witness (%Int64, %Op.72717c.9), @DivWith.1, @DivWith.1(%Int64) [concrete] // CHECK:STDOUT: %facet_value.46b: %facet_type.89f = facet_value %Int32, (%DestroyImpl.impl_witness.40d, %custom_witness.5760f4.2, %custom_witness.099) [concrete] // CHECK:STDOUT: %.Self.frozen.d10: %facet_type.dd8 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.4732f8.1: = complete_type_witness %facet_type.dd8 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.483: type = facet_access_type %.Self.frozen.d10 [symbolic_self] -// CHECK:STDOUT: %DivWith.lookup_impl_witness.531: = lookup_impl_witness %.Self.frozen.d10, @DivWith.1, @DivWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.872: type = impl_witness_access %DivWith.lookup_impl_witness.531, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.fcf: type = pattern_type %facet_type.89f [concrete] // CHECK:STDOUT: %T.patt.5ce: %pattern_type.fcf = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.c72: type = facet_type <@ModWith.1, @ModWith.1(%Int64) & @Destroy> [concrete] @@ -1005,17 +885,12 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_type.573: type = facet_type <@ModWith.1, @ModWith.1(%Int64) & @Destroy where %impl.elem0.9c8 = %Int64> [concrete] // CHECK:STDOUT: %ModWith.type.c72: type = facet_type <@ModWith.1, @ModWith.1(%Int64)> [concrete] // CHECK:STDOUT: %ModWith.assoc_type.ad2: type = assoc_entity_type @ModWith.1, @ModWith.1(%Int64) [concrete] -// CHECK:STDOUT: %assoc0.c8a: %ModWith.assoc_type.ad2 = assoc_entity element0, imports.%Core.import_ref.61a [concrete] // CHECK:STDOUT: %assoc1.eed: %ModWith.assoc_type.ad2 = assoc_entity element1, imports.%Core.import_ref.9f8f [concrete] // 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.129: = custom_witness (%Int64, %Op.72717c.10), @ModWith.1, @ModWith.1(%Int64) [concrete] // CHECK:STDOUT: %facet_value.9bd: %facet_type.573 = facet_value %Int32, (%DestroyImpl.impl_witness.40d, %custom_witness.5760f4.2, %custom_witness.129) [concrete] // CHECK:STDOUT: %.Self.frozen.c84: %facet_type.c72 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %complete_type.4d1b1b.1: = complete_type_witness %facet_type.c72 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.40c: type = facet_access_type %.Self.frozen.c84 [symbolic_self] -// CHECK:STDOUT: %ModWith.lookup_impl_witness.06d: = lookup_impl_witness %.Self.frozen.c84, @ModWith.1, @ModWith.1(%Int64) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.968: type = impl_witness_access %ModWith.lookup_impl_witness.06d, element0 [symbolic_self] // CHECK:STDOUT: %pattern_type.6af: type = pattern_type %facet_type.573 [concrete] // CHECK:STDOUT: %T.patt.6c9: %pattern_type.6af = symbolic_binding_pattern T, 2 [symbolic] // CHECK:STDOUT: %facet_type.279: type = facet_type <@AddWith.1, @AddWith.1(%Int32) & @Destroy where %impl.elem0.a74 = %Int64> [concrete] @@ -1355,63 +1230,63 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %facet_value.9b8: %facet_type.517 = facet_value %Int32, (%DestroyImpl.impl_witness.40d, %custom_witness.5760f4.2, %custom_witness.a85) [concrete] // CHECK:STDOUT: %pattern_type.eaa: type = pattern_type %facet_type.517 [concrete] // CHECK:STDOUT: %T.patt.532: %pattern_type.eaa = symbolic_binding_pattern T, 1 [symbolic] -// CHECK:STDOUT: %complete_type.f37bc8.2: = complete_type_witness %AddWith.type.e4b [concrete] +// CHECK:STDOUT: %complete_type.f37: = complete_type_witness %AddWith.type.e4b [concrete] // CHECK:STDOUT: %AddWith.facet.2ce: %AddWith.type.e4b = facet_value %i16, (%custom_witness.cba) [concrete] // CHECK:STDOUT: %AddWith.WithSelf.Op.type.4a0: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%Int16, %AddWith.facet.2ce) [concrete] // CHECK:STDOUT: %.7bc: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.4a0, %AddWith.facet.2ce [concrete] -// CHECK:STDOUT: %complete_type.8a2f63.2: = complete_type_witness %SubWith.type.68d [concrete] +// CHECK:STDOUT: %complete_type.8a2: = complete_type_witness %SubWith.type.68d [concrete] // CHECK:STDOUT: %SubWith.facet.1ef: %SubWith.type.68d = facet_value %i16, (%custom_witness.354) [concrete] // CHECK:STDOUT: %SubWith.WithSelf.Op.type.23f: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%Int16, %SubWith.facet.1ef) [concrete] // CHECK:STDOUT: %.eed: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.23f, %SubWith.facet.1ef [concrete] -// CHECK:STDOUT: %complete_type.8c670c.2: = complete_type_witness %MulWith.type.f65 [concrete] +// CHECK:STDOUT: %complete_type.8c6: = complete_type_witness %MulWith.type.f65 [concrete] // CHECK:STDOUT: %MulWith.facet.d84: %MulWith.type.f65 = facet_value %i16, (%custom_witness.3c3) [concrete] // CHECK:STDOUT: %MulWith.WithSelf.Op.type.131: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%Int16, %MulWith.facet.d84) [concrete] // CHECK:STDOUT: %.010: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.131, %MulWith.facet.d84 [concrete] -// CHECK:STDOUT: %complete_type.d99d66.2: = complete_type_witness %DivWith.type.b8a [concrete] +// CHECK:STDOUT: %complete_type.d99: = complete_type_witness %DivWith.type.b8a [concrete] // CHECK:STDOUT: %DivWith.facet.4ad: %DivWith.type.b8a = facet_value %i16, (%custom_witness.8d0) [concrete] // CHECK:STDOUT: %DivWith.WithSelf.Op.type.edb: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%Int16, %DivWith.facet.4ad) [concrete] // CHECK:STDOUT: %.b5e: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.edb, %DivWith.facet.4ad [concrete] -// CHECK:STDOUT: %complete_type.7d80e1.2: = complete_type_witness %ModWith.type.c67 [concrete] +// CHECK:STDOUT: %complete_type.7d8: = complete_type_witness %ModWith.type.c67 [concrete] // CHECK:STDOUT: %ModWith.facet.ab1: %ModWith.type.c67 = facet_value %i16, (%custom_witness.169) [concrete] // CHECK:STDOUT: %ModWith.WithSelf.Op.type.e29: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%Int16, %ModWith.facet.ab1) [concrete] // CHECK:STDOUT: %.d62: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.e29, %ModWith.facet.ab1 [concrete] -// CHECK:STDOUT: %complete_type.32de8b.2: = complete_type_witness %AddWith.type.2ed [concrete] +// CHECK:STDOUT: %complete_type.32d: = complete_type_witness %AddWith.type.2ed [concrete] // CHECK:STDOUT: %AddWith.facet.11e: %AddWith.type.2ed = facet_value %Int16, (%custom_witness.b79) [concrete] // CHECK:STDOUT: %AddWith.WithSelf.Op.type.eb3: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%i16, %AddWith.facet.11e) [concrete] // CHECK:STDOUT: %.da8: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.eb3, %AddWith.facet.11e [concrete] -// CHECK:STDOUT: %complete_type.75c188.2: = complete_type_witness %SubWith.type.606 [concrete] +// CHECK:STDOUT: %complete_type.75c: = complete_type_witness %SubWith.type.606 [concrete] // CHECK:STDOUT: %SubWith.facet.6fa: %SubWith.type.606 = facet_value %Int16, (%custom_witness.1e8) [concrete] // CHECK:STDOUT: %SubWith.WithSelf.Op.type.bb5: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%i16, %SubWith.facet.6fa) [concrete] // CHECK:STDOUT: %.42a: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.bb5, %SubWith.facet.6fa [concrete] -// CHECK:STDOUT: %complete_type.a7adcd.2: = complete_type_witness %MulWith.type.1e2 [concrete] +// CHECK:STDOUT: %complete_type.a7a: = complete_type_witness %MulWith.type.1e2 [concrete] // CHECK:STDOUT: %MulWith.facet.8b1: %MulWith.type.1e2 = facet_value %Int16, (%custom_witness.e2b) [concrete] // CHECK:STDOUT: %MulWith.WithSelf.Op.type.8f5: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%i16, %MulWith.facet.8b1) [concrete] // CHECK:STDOUT: %.ecc: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.8f5, %MulWith.facet.8b1 [concrete] -// CHECK:STDOUT: %complete_type.d57eaf.2: = complete_type_witness %DivWith.type.45d [concrete] +// CHECK:STDOUT: %complete_type.d57: = complete_type_witness %DivWith.type.45d [concrete] // CHECK:STDOUT: %DivWith.facet.57c: %DivWith.type.45d = facet_value %Int16, (%custom_witness.21db) [concrete] // CHECK:STDOUT: %DivWith.WithSelf.Op.type.37a: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%i16, %DivWith.facet.57c) [concrete] // CHECK:STDOUT: %.5a3: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.37a, %DivWith.facet.57c [concrete] -// CHECK:STDOUT: %complete_type.4d792a.2: = complete_type_witness %ModWith.type.104 [concrete] +// CHECK:STDOUT: %complete_type.4d7: = complete_type_witness %ModWith.type.104 [concrete] // CHECK:STDOUT: %ModWith.facet.f5a5: %ModWith.type.104 = facet_value %Int16, (%custom_witness.6dd) [concrete] // CHECK:STDOUT: %ModWith.WithSelf.Op.type.374: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%i16, %ModWith.facet.f5a5) [concrete] // CHECK:STDOUT: %.52c1: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.374, %ModWith.facet.f5a5 [concrete] -// CHECK:STDOUT: %complete_type.758ea8.2: = complete_type_witness %AddWith.type.db7 [concrete] +// CHECK:STDOUT: %complete_type.758: = complete_type_witness %AddWith.type.db7 [concrete] // CHECK:STDOUT: %AddWith.facet.8f8: %AddWith.type.db7 = facet_value %Int16, (%custom_witness.513476.1) [concrete] // CHECK:STDOUT: %AddWith.WithSelf.Op.type.4cf: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%Int32, %AddWith.facet.8f8) [concrete] // CHECK:STDOUT: %.feb: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.4cf, %AddWith.facet.8f8 [concrete] -// CHECK:STDOUT: %complete_type.46ea3c.2: = complete_type_witness %SubWith.type.120 [concrete] +// CHECK:STDOUT: %complete_type.46e: = complete_type_witness %SubWith.type.120 [concrete] // CHECK:STDOUT: %SubWith.facet.0b0: %SubWith.type.120 = facet_value %Int16, (%custom_witness.32cef1.1) [concrete] // CHECK:STDOUT: %SubWith.WithSelf.Op.type.e1e: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%Int32, %SubWith.facet.0b0) [concrete] // CHECK:STDOUT: %.988: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.e1e, %SubWith.facet.0b0 [concrete] -// CHECK:STDOUT: %complete_type.920626.2: = complete_type_witness %MulWith.type.d67 [concrete] +// CHECK:STDOUT: %complete_type.920: = complete_type_witness %MulWith.type.d67 [concrete] // CHECK:STDOUT: %MulWith.facet.4b9: %MulWith.type.d67 = facet_value %Int16, (%custom_witness.3a0675.1) [concrete] // CHECK:STDOUT: %MulWith.WithSelf.Op.type.8f2: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%Int32, %MulWith.facet.4b9) [concrete] // CHECK:STDOUT: %.47a1: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.8f2, %MulWith.facet.4b9 [concrete] -// CHECK:STDOUT: %complete_type.348fba.2: = complete_type_witness %DivWith.type.5a1 [concrete] +// CHECK:STDOUT: %complete_type.348: = complete_type_witness %DivWith.type.5a1 [concrete] // CHECK:STDOUT: %DivWith.facet.5c5: %DivWith.type.5a1 = facet_value %Int16, (%custom_witness.c32685.1) [concrete] // CHECK:STDOUT: %DivWith.WithSelf.Op.type.af3: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%Int32, %DivWith.facet.5c5) [concrete] // CHECK:STDOUT: %.836: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.af3, %DivWith.facet.5c5 [concrete] -// CHECK:STDOUT: %complete_type.cc95ce.2: = complete_type_witness %ModWith.type.794 [concrete] +// CHECK:STDOUT: %complete_type.cc9: = complete_type_witness %ModWith.type.794 [concrete] // CHECK:STDOUT: %ModWith.facet.cc5: %ModWith.type.794 = facet_value %Int16, (%custom_witness.994c75.1) [concrete] // CHECK:STDOUT: %ModWith.WithSelf.Op.type.ab7: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%Int32, %ModWith.facet.cc5) [concrete] // CHECK:STDOUT: %.2a3: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.ab7, %ModWith.facet.cc5 [concrete] @@ -1445,23 +1320,23 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.facet.3dc: %ModWith.type.794 = facet_value %Int32, (%custom_witness.994c75.2) [concrete] // CHECK:STDOUT: %ModWith.WithSelf.Op.type.a2a: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%Int32, %ModWith.facet.3dc) [concrete] // CHECK:STDOUT: %.b6d: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.a2a, %ModWith.facet.3dc [concrete] -// CHECK:STDOUT: %complete_type.57be9d.2: = complete_type_witness %AddWith.type.1ff [concrete] +// CHECK:STDOUT: %complete_type.57b: = complete_type_witness %AddWith.type.1ff [concrete] // CHECK:STDOUT: %AddWith.facet.0d8: %AddWith.type.1ff = facet_value %Int32, (%custom_witness.f2f) [concrete] // CHECK:STDOUT: %AddWith.WithSelf.Op.type.a40: type = fn_type @AddWith.WithSelf.Op, @AddWith.WithSelf(%Int64, %AddWith.facet.0d8) [concrete] // CHECK:STDOUT: %.51d: type = fn_type_with_self_type %AddWith.WithSelf.Op.type.a40, %AddWith.facet.0d8 [concrete] -// CHECK:STDOUT: %complete_type.cb55bb.2: = complete_type_witness %SubWith.type.31c [concrete] +// CHECK:STDOUT: %complete_type.cb5: = complete_type_witness %SubWith.type.31c [concrete] // CHECK:STDOUT: %SubWith.facet.d62: %SubWith.type.31c = facet_value %Int32, (%custom_witness.276) [concrete] // CHECK:STDOUT: %SubWith.WithSelf.Op.type.d39: type = fn_type @SubWith.WithSelf.Op, @SubWith.WithSelf(%Int64, %SubWith.facet.d62) [concrete] // CHECK:STDOUT: %.e39: type = fn_type_with_self_type %SubWith.WithSelf.Op.type.d39, %SubWith.facet.d62 [concrete] -// CHECK:STDOUT: %complete_type.0a6803.2: = complete_type_witness %MulWith.type.661 [concrete] +// CHECK:STDOUT: %complete_type.0a6: = complete_type_witness %MulWith.type.661 [concrete] // CHECK:STDOUT: %MulWith.facet.4a0: %MulWith.type.661 = facet_value %Int32, (%custom_witness.8e4) [concrete] // CHECK:STDOUT: %MulWith.WithSelf.Op.type.489: type = fn_type @MulWith.WithSelf.Op, @MulWith.WithSelf(%Int64, %MulWith.facet.4a0) [concrete] // CHECK:STDOUT: %.2e6: type = fn_type_with_self_type %MulWith.WithSelf.Op.type.489, %MulWith.facet.4a0 [concrete] -// CHECK:STDOUT: %complete_type.4732f8.2: = complete_type_witness %DivWith.type.dd8 [concrete] +// CHECK:STDOUT: %complete_type.473: = complete_type_witness %DivWith.type.dd8 [concrete] // CHECK:STDOUT: %DivWith.facet.b29: %DivWith.type.dd8 = facet_value %Int32, (%custom_witness.099) [concrete] // CHECK:STDOUT: %DivWith.WithSelf.Op.type.9fa: type = fn_type @DivWith.WithSelf.Op, @DivWith.WithSelf(%Int64, %DivWith.facet.b29) [concrete] // CHECK:STDOUT: %.bc2: type = fn_type_with_self_type %DivWith.WithSelf.Op.type.9fa, %DivWith.facet.b29 [concrete] -// CHECK:STDOUT: %complete_type.4d1b1b.2: = complete_type_witness %ModWith.type.c72 [concrete] +// CHECK:STDOUT: %complete_type.4d1: = complete_type_witness %ModWith.type.c72 [concrete] // CHECK:STDOUT: %ModWith.facet.b10: %ModWith.type.c72 = facet_value %Int32, (%custom_witness.129) [concrete] // CHECK:STDOUT: %ModWith.WithSelf.Op.type.1ecc: type = fn_type @ModWith.WithSelf.Op, @ModWith.WithSelf(%Int64, %ModWith.facet.b10) [concrete] // CHECK:STDOUT: %.bf4: type = fn_type_with_self_type %ModWith.WithSelf.Op.type.1ecc, %ModWith.facet.b10 [concrete] @@ -1535,28 +1410,18 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core.import_ref.5c64: @AddWith.WithSelf.%AddWith.assoc_type (%AddWith.assoc_type.1d5) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.WithSelf.%assoc1 (constants.%assoc1.84a)] // CHECK:STDOUT: %Core.import_ref.8ad: @AddWith.WithSelf.%AddWith.WithSelf.Op.type (%AddWith.WithSelf.Op.type.70b) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @AddWith.WithSelf.%AddWith.WithSelf.Op (constants.%AddWith.WithSelf.Op.bb1)] -// CHECK:STDOUT: %Core.import_ref.91f: 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.e9a = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.5fe: @SubWith.WithSelf.%SubWith.assoc_type (%SubWith.assoc_type.300) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @SubWith.WithSelf.%assoc1 (constants.%assoc1.b58)] // CHECK:STDOUT: %Core.import_ref.2f4: @SubWith.WithSelf.%SubWith.WithSelf.Op.type (%SubWith.WithSelf.Op.type.028) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @SubWith.WithSelf.%SubWith.WithSelf.Op (constants.%SubWith.WithSelf.Op.e84)] -// CHECK:STDOUT: %Core.import_ref.190: 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] {} // CHECK:STDOUT: %Core.import_ref.124 = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.0a8: @MulWith.WithSelf.%MulWith.assoc_type (%MulWith.assoc_type.c81) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @MulWith.WithSelf.%assoc1 (constants.%assoc1.d9e)] // CHECK:STDOUT: %Core.import_ref.fc2: @MulWith.WithSelf.%MulWith.WithSelf.Op.type (%MulWith.WithSelf.Op.type.dad) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @MulWith.WithSelf.%MulWith.WithSelf.Op (constants.%MulWith.WithSelf.Op.507)] -// CHECK:STDOUT: %Core.import_ref.59c: type = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [concrete = %Result.a64] -// CHECK:STDOUT: %Result.a64: type = assoc_const_decl @Result.3 [concrete] {} // CHECK:STDOUT: %Core.import_ref.29d = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.972: @DivWith.WithSelf.%DivWith.assoc_type (%DivWith.assoc_type.e7d) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @DivWith.WithSelf.%assoc1 (constants.%assoc1.2b8)] // CHECK:STDOUT: %Core.import_ref.f2f: @DivWith.WithSelf.%DivWith.WithSelf.Op.type (%DivWith.WithSelf.Op.type.207) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @DivWith.WithSelf.%DivWith.WithSelf.Op (constants.%DivWith.WithSelf.Op.4f1)] -// CHECK:STDOUT: %Core.import_ref.dee: type = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [concrete = %Result.cb0] -// CHECK:STDOUT: %Result.cb0: type = assoc_const_decl @Result.4 [concrete] {} // CHECK:STDOUT: %Core.import_ref.94d = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.ea5e3: @ModWith.WithSelf.%ModWith.assoc_type (%ModWith.assoc_type.1f1) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @ModWith.WithSelf.%assoc1 (constants.%assoc1.f4b)] // CHECK:STDOUT: %Core.import_ref.9f8f: @ModWith.WithSelf.%ModWith.WithSelf.Op.type (%ModWith.WithSelf.Op.type.04e) = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [symbolic = @ModWith.WithSelf.%ModWith.WithSelf.Op (constants.%ModWith.WithSelf.Op.6fb)] -// CHECK:STDOUT: %Core.import_ref.61a: type = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, loaded [concrete = %Result.803] -// CHECK:STDOUT: %Result.803: type = assoc_const_decl @Result.5 [concrete] {} // CHECK:STDOUT: %Core.import_ref.be00 = import_ref Core//prelude/operators/arithmetic, loc{{\d+_\d+}}, unloaded // CHECK:STDOUT: %Core.import_ref.74d: @T.as_type.as.DestroyImpl.impl.%T.as_type.as.DestroyImpl.impl.Op.type (%T.as_type.as.DestroyImpl.impl.Op.type.dea) = import_ref Core//prelude/destroy, loc{{\d+_\d+}}, loaded [symbolic = @T.as_type.as.DestroyImpl.impl.%T.as_type.as.DestroyImpl.impl.Op (constants.%T.as_type.as.DestroyImpl.impl.Op.6e5)] // CHECK:STDOUT: %DestroyImpl.impl_witness_table = impl_witness_table (%Core.import_ref.74d), @T.as_type.as.DestroyImpl.impl [concrete] @@ -1583,6 +1448,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc126: = require_complete_type %AddWith.type.loc123_35.1 [symbolic = %require_complete.loc126 (constants.%require_complete.528878.2)] +// CHECK:STDOUT: %AddWith.assoc_type: type = assoc_entity_type @AddWith.1, @AddWith.1(%U.as_type.loc123_35.1) [symbolic = %AddWith.assoc_type (constants.%AddWith.assoc_type.71f)] // CHECK:STDOUT: %assoc1: @AddWith.loc124.%AddWith.assoc_type (%AddWith.assoc_type.71f) = assoc_entity element1, imports.%Core.import_ref.8ad [symbolic = %assoc1 (constants.%assoc1.f40)] // CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126: = lookup_impl_witness %T.loc123_4.1, @AddWith.1, @AddWith.1(%U.as_type.loc123_35.1) [symbolic = %AddWith.lookup_impl_witness.loc126 (constants.%AddWith.lookup_impl_witness.206)] // CHECK:STDOUT: %AddWith.facet: @AddWith.loc124.%AddWith.type.loc123_35.1 (%AddWith.type.4f5) = facet_value %T.as_type.loc124_29.1, (%AddWith.lookup_impl_witness.loc126) [symbolic = %AddWith.facet (constants.%AddWith.facet.880)] @@ -1592,7 +1458,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc126_5.2: = specific_impl_function %impl.elem1.loc126_5.2, @AddWith.WithSelf.Op(%U.as_type.loc123_35.1, %AddWith.facet) [symbolic = %specific_impl_fn.loc126_5.2 (constants.%specific_impl_fn.896)] // CHECK:STDOUT: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @AddWith.loc124.%Result.as_type.loc123_53.1 (%Result.as_type), %x.param: @AddWith.loc124.%T.as_type.loc124_29.1 (%T.as_type.d2e), %y.param: @AddWith.loc124.%U.as_type.loc123_35.1 (%U.as_type.0bd)) { +// CHECK:STDOUT: fn(%result.param: @AddWith.loc124.%Result.as_type.loc123_37 (%Result.as_type), %x.param: @AddWith.loc124.%T.as_type.loc124_29.1 (%T.as_type.d2e), %y.param: @AddWith.loc124.%U.as_type.loc123_35.1 (%U.as_type.0bd)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @AddWith.loc124.%T.as_type.loc124_29.1 (%T.as_type.d2e) = name_ref x, %x // CHECK:STDOUT: %y.ref: @AddWith.loc124.%U.as_type.loc123_35.1 (%U.as_type.0bd) = name_ref y, %y @@ -1603,9 +1469,9 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // 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.0bd, constants.%AddWith.facet.880) [symbolic = %specific_impl_fn.loc126_5.2 (constants.%specific_impl_fn.896)] // 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_53.1 (%Result.as_type) = temporary_storage -// CHECK:STDOUT: %AddWith.WithSelf.Op.call: init @AddWith.loc124.%Result.as_type.loc123_53.1 (%Result.as_type) to %.loc126_5.2 = call %bound_method.loc126_5.2(%x.ref, %y.ref) -// CHECK:STDOUT: %.loc126_5.3: ref @AddWith.loc124.%Result.as_type.loc123_53.1 (%Result.as_type) = temporary %.loc126_5.2, %AddWith.WithSelf.Op.call +// CHECK:STDOUT: %.loc126_5.2: ref @AddWith.loc124.%Result.as_type.loc123_37 (%Result.as_type) = temporary_storage +// CHECK:STDOUT: %AddWith.WithSelf.Op.call: init @AddWith.loc124.%Result.as_type.loc123_37 (%Result.as_type) to %.loc126_5.2 = call %bound_method.loc126_5.2(%x.ref, %y.ref) +// CHECK:STDOUT: %.loc126_5.3: ref @AddWith.loc124.%Result.as_type.loc123_37 (%Result.as_type) = temporary %.loc126_5.2, %AddWith.WithSelf.Op.call // CHECK:STDOUT: %.loc126_5.4: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc121_9.1 (constants.%Result)] // CHECK:STDOUT: %.loc126_5.5: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc121_9.1 (constants.%Result)] // CHECK:STDOUT: @@ -1620,6 +1486,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc137: = require_complete_type %SubWith.type.loc134_35.1 [symbolic = %require_complete.loc137 (constants.%require_complete.49f499.2)] +// CHECK:STDOUT: %SubWith.assoc_type: type = assoc_entity_type @SubWith.1, @SubWith.1(%U.as_type.loc134_35.1) [symbolic = %SubWith.assoc_type (constants.%SubWith.assoc_type.5f0)] // CHECK:STDOUT: %assoc1: @SubWith.loc135.%SubWith.assoc_type (%SubWith.assoc_type.5f0) = assoc_entity element1, imports.%Core.import_ref.2f4 [symbolic = %assoc1 (constants.%assoc1.a86)] // CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137: = lookup_impl_witness %T.loc134_4.1, @SubWith.1, @SubWith.1(%U.as_type.loc134_35.1) [symbolic = %SubWith.lookup_impl_witness.loc137 (constants.%SubWith.lookup_impl_witness.725)] // CHECK:STDOUT: %SubWith.facet: @SubWith.loc135.%SubWith.type.loc134_35.1 (%SubWith.type.769) = facet_value %T.as_type.loc135_29.1, (%SubWith.lookup_impl_witness.loc137) [symbolic = %SubWith.facet (constants.%SubWith.facet.910)] @@ -1629,7 +1496,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc137_5.2: = specific_impl_function %impl.elem1.loc137_5.2, @SubWith.WithSelf.Op(%U.as_type.loc134_35.1, %SubWith.facet) [symbolic = %specific_impl_fn.loc137_5.2 (constants.%specific_impl_fn.a72)] // CHECK:STDOUT: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @SubWith.loc135.%Result.as_type.loc134_53.1 (%Result.as_type), %x.param: @SubWith.loc135.%T.as_type.loc135_29.1 (%T.as_type.4b7), %y.param: @SubWith.loc135.%U.as_type.loc134_35.1 (%U.as_type.0bd)) { +// CHECK:STDOUT: fn(%result.param: @SubWith.loc135.%Result.as_type.loc134_37 (%Result.as_type), %x.param: @SubWith.loc135.%T.as_type.loc135_29.1 (%T.as_type.4b7), %y.param: @SubWith.loc135.%U.as_type.loc134_35.1 (%U.as_type.0bd)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @SubWith.loc135.%T.as_type.loc135_29.1 (%T.as_type.4b7) = name_ref x, %x // CHECK:STDOUT: %y.ref: @SubWith.loc135.%U.as_type.loc134_35.1 (%U.as_type.0bd) = name_ref y, %y @@ -1640,9 +1507,9 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // 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.0bd, constants.%SubWith.facet.910) [symbolic = %specific_impl_fn.loc137_5.2 (constants.%specific_impl_fn.a72)] // 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_53.1 (%Result.as_type) = temporary_storage -// CHECK:STDOUT: %SubWith.WithSelf.Op.call: init @SubWith.loc135.%Result.as_type.loc134_53.1 (%Result.as_type) to %.loc137_5.2 = call %bound_method.loc137_5.2(%x.ref, %y.ref) -// CHECK:STDOUT: %.loc137_5.3: ref @SubWith.loc135.%Result.as_type.loc134_53.1 (%Result.as_type) = temporary %.loc137_5.2, %SubWith.WithSelf.Op.call +// CHECK:STDOUT: %.loc137_5.2: ref @SubWith.loc135.%Result.as_type.loc134_37 (%Result.as_type) = temporary_storage +// CHECK:STDOUT: %SubWith.WithSelf.Op.call: init @SubWith.loc135.%Result.as_type.loc134_37 (%Result.as_type) to %.loc137_5.2 = call %bound_method.loc137_5.2(%x.ref, %y.ref) +// CHECK:STDOUT: %.loc137_5.3: ref @SubWith.loc135.%Result.as_type.loc134_37 (%Result.as_type) = temporary %.loc137_5.2, %SubWith.WithSelf.Op.call // CHECK:STDOUT: %.loc137_5.4: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc132_9.1 (constants.%Result)] // CHECK:STDOUT: %.loc137_5.5: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc132_9.1 (constants.%Result)] // CHECK:STDOUT: @@ -1657,6 +1524,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc148: = require_complete_type %MulWith.type.loc145_35.1 [symbolic = %require_complete.loc148 (constants.%require_complete.8389d3.2)] +// CHECK:STDOUT: %MulWith.assoc_type: type = assoc_entity_type @MulWith.1, @MulWith.1(%U.as_type.loc145_35.1) [symbolic = %MulWith.assoc_type (constants.%MulWith.assoc_type.2e5)] // CHECK:STDOUT: %assoc1: @MulWith.loc146.%MulWith.assoc_type (%MulWith.assoc_type.2e5) = assoc_entity element1, imports.%Core.import_ref.fc2 [symbolic = %assoc1 (constants.%assoc1.4eb)] // CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148: = lookup_impl_witness %T.loc145_4.1, @MulWith.1, @MulWith.1(%U.as_type.loc145_35.1) [symbolic = %MulWith.lookup_impl_witness.loc148 (constants.%MulWith.lookup_impl_witness.50b)] // CHECK:STDOUT: %MulWith.facet: @MulWith.loc146.%MulWith.type.loc145_35.1 (%MulWith.type.b0b) = facet_value %T.as_type.loc146_29.1, (%MulWith.lookup_impl_witness.loc148) [symbolic = %MulWith.facet (constants.%MulWith.facet.756)] @@ -1666,7 +1534,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc148_5.2: = specific_impl_function %impl.elem1.loc148_5.2, @MulWith.WithSelf.Op(%U.as_type.loc145_35.1, %MulWith.facet) [symbolic = %specific_impl_fn.loc148_5.2 (constants.%specific_impl_fn.2bd)] // CHECK:STDOUT: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @MulWith.loc146.%Result.as_type.loc145_53.1 (%Result.as_type), %x.param: @MulWith.loc146.%T.as_type.loc146_29.1 (%T.as_type.639), %y.param: @MulWith.loc146.%U.as_type.loc145_35.1 (%U.as_type.0bd)) { +// CHECK:STDOUT: fn(%result.param: @MulWith.loc146.%Result.as_type.loc145_37 (%Result.as_type), %x.param: @MulWith.loc146.%T.as_type.loc146_29.1 (%T.as_type.639), %y.param: @MulWith.loc146.%U.as_type.loc145_35.1 (%U.as_type.0bd)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @MulWith.loc146.%T.as_type.loc146_29.1 (%T.as_type.639) = name_ref x, %x // CHECK:STDOUT: %y.ref: @MulWith.loc146.%U.as_type.loc145_35.1 (%U.as_type.0bd) = name_ref y, %y @@ -1677,9 +1545,9 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // 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.0bd, constants.%MulWith.facet.756) [symbolic = %specific_impl_fn.loc148_5.2 (constants.%specific_impl_fn.2bd)] // 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_53.1 (%Result.as_type) = temporary_storage -// CHECK:STDOUT: %MulWith.WithSelf.Op.call: init @MulWith.loc146.%Result.as_type.loc145_53.1 (%Result.as_type) to %.loc148_5.2 = call %bound_method.loc148_5.2(%x.ref, %y.ref) -// CHECK:STDOUT: %.loc148_5.3: ref @MulWith.loc146.%Result.as_type.loc145_53.1 (%Result.as_type) = temporary %.loc148_5.2, %MulWith.WithSelf.Op.call +// CHECK:STDOUT: %.loc148_5.2: ref @MulWith.loc146.%Result.as_type.loc145_37 (%Result.as_type) = temporary_storage +// CHECK:STDOUT: %MulWith.WithSelf.Op.call: init @MulWith.loc146.%Result.as_type.loc145_37 (%Result.as_type) to %.loc148_5.2 = call %bound_method.loc148_5.2(%x.ref, %y.ref) +// CHECK:STDOUT: %.loc148_5.3: ref @MulWith.loc146.%Result.as_type.loc145_37 (%Result.as_type) = temporary %.loc148_5.2, %MulWith.WithSelf.Op.call // CHECK:STDOUT: %.loc148_5.4: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc143_9.1 (constants.%Result)] // CHECK:STDOUT: %.loc148_5.5: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc143_9.1 (constants.%Result)] // CHECK:STDOUT: @@ -1694,6 +1562,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc159: = require_complete_type %DivWith.type.loc156_35.1 [symbolic = %require_complete.loc159 (constants.%require_complete.c4013f.2)] +// CHECK:STDOUT: %DivWith.assoc_type: type = assoc_entity_type @DivWith.1, @DivWith.1(%U.as_type.loc156_35.1) [symbolic = %DivWith.assoc_type (constants.%DivWith.assoc_type.e65)] // CHECK:STDOUT: %assoc1: @DivWith.loc157.%DivWith.assoc_type (%DivWith.assoc_type.e65) = assoc_entity element1, imports.%Core.import_ref.f2f [symbolic = %assoc1 (constants.%assoc1.ed1)] // CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159: = lookup_impl_witness %T.loc156_4.1, @DivWith.1, @DivWith.1(%U.as_type.loc156_35.1) [symbolic = %DivWith.lookup_impl_witness.loc159 (constants.%DivWith.lookup_impl_witness.e1e)] // CHECK:STDOUT: %DivWith.facet: @DivWith.loc157.%DivWith.type.loc156_35.1 (%DivWith.type.71d) = facet_value %T.as_type.loc157_29.1, (%DivWith.lookup_impl_witness.loc159) [symbolic = %DivWith.facet (constants.%DivWith.facet.538)] @@ -1703,7 +1572,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc159_5.2: = specific_impl_function %impl.elem1.loc159_5.2, @DivWith.WithSelf.Op(%U.as_type.loc156_35.1, %DivWith.facet) [symbolic = %specific_impl_fn.loc159_5.2 (constants.%specific_impl_fn.ea9)] // CHECK:STDOUT: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @DivWith.loc157.%Result.as_type.loc156_53.1 (%Result.as_type), %x.param: @DivWith.loc157.%T.as_type.loc157_29.1 (%T.as_type.6cf), %y.param: @DivWith.loc157.%U.as_type.loc156_35.1 (%U.as_type.0bd)) { +// CHECK:STDOUT: fn(%result.param: @DivWith.loc157.%Result.as_type.loc156_37 (%Result.as_type), %x.param: @DivWith.loc157.%T.as_type.loc157_29.1 (%T.as_type.6cf), %y.param: @DivWith.loc157.%U.as_type.loc156_35.1 (%U.as_type.0bd)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @DivWith.loc157.%T.as_type.loc157_29.1 (%T.as_type.6cf) = name_ref x, %x // CHECK:STDOUT: %y.ref: @DivWith.loc157.%U.as_type.loc156_35.1 (%U.as_type.0bd) = name_ref y, %y @@ -1714,9 +1583,9 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // 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.0bd, constants.%DivWith.facet.538) [symbolic = %specific_impl_fn.loc159_5.2 (constants.%specific_impl_fn.ea9)] // 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_53.1 (%Result.as_type) = temporary_storage -// CHECK:STDOUT: %DivWith.WithSelf.Op.call: init @DivWith.loc157.%Result.as_type.loc156_53.1 (%Result.as_type) to %.loc159_5.2 = call %bound_method.loc159_5.2(%x.ref, %y.ref) -// CHECK:STDOUT: %.loc159_5.3: ref @DivWith.loc157.%Result.as_type.loc156_53.1 (%Result.as_type) = temporary %.loc159_5.2, %DivWith.WithSelf.Op.call +// CHECK:STDOUT: %.loc159_5.2: ref @DivWith.loc157.%Result.as_type.loc156_37 (%Result.as_type) = temporary_storage +// CHECK:STDOUT: %DivWith.WithSelf.Op.call: init @DivWith.loc157.%Result.as_type.loc156_37 (%Result.as_type) to %.loc159_5.2 = call %bound_method.loc159_5.2(%x.ref, %y.ref) +// CHECK:STDOUT: %.loc159_5.3: ref @DivWith.loc157.%Result.as_type.loc156_37 (%Result.as_type) = temporary %.loc159_5.2, %DivWith.WithSelf.Op.call // CHECK:STDOUT: %.loc159_5.4: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc154_9.1 (constants.%Result)] // CHECK:STDOUT: %.loc159_5.5: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc154_9.1 (constants.%Result)] // CHECK:STDOUT: @@ -1731,6 +1600,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: %require_complete.loc170: = require_complete_type %ModWith.type.loc167_35.1 [symbolic = %require_complete.loc170 (constants.%require_complete.312803.2)] +// CHECK:STDOUT: %ModWith.assoc_type: type = assoc_entity_type @ModWith.1, @ModWith.1(%U.as_type.loc167_35.1) [symbolic = %ModWith.assoc_type (constants.%ModWith.assoc_type.9c3)] // CHECK:STDOUT: %assoc1: @ModWith.loc168.%ModWith.assoc_type (%ModWith.assoc_type.9c3) = assoc_entity element1, imports.%Core.import_ref.9f8f [symbolic = %assoc1 (constants.%assoc1.3d6)] // CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170: = lookup_impl_witness %T.loc167_4.1, @ModWith.1, @ModWith.1(%U.as_type.loc167_35.1) [symbolic = %ModWith.lookup_impl_witness.loc170 (constants.%ModWith.lookup_impl_witness.c4b)] // CHECK:STDOUT: %ModWith.facet: @ModWith.loc168.%ModWith.type.loc167_35.1 (%ModWith.type.68a) = facet_value %T.as_type.loc168_29.1, (%ModWith.lookup_impl_witness.loc170) [symbolic = %ModWith.facet (constants.%ModWith.facet.297)] @@ -1740,7 +1610,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc170_5.2: = specific_impl_function %impl.elem1.loc170_5.2, @ModWith.WithSelf.Op(%U.as_type.loc167_35.1, %ModWith.facet) [symbolic = %specific_impl_fn.loc170_5.2 (constants.%specific_impl_fn.6e9)] // CHECK:STDOUT: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%result.param: @ModWith.loc168.%Result.as_type.loc167_53.1 (%Result.as_type), %x.param: @ModWith.loc168.%T.as_type.loc168_29.1 (%T.as_type.73e), %y.param: @ModWith.loc168.%U.as_type.loc167_35.1 (%U.as_type.0bd)) { +// CHECK:STDOUT: fn(%result.param: @ModWith.loc168.%Result.as_type.loc167_37 (%Result.as_type), %x.param: @ModWith.loc168.%T.as_type.loc168_29.1 (%T.as_type.73e), %y.param: @ModWith.loc168.%U.as_type.loc167_35.1 (%U.as_type.0bd)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @ModWith.loc168.%T.as_type.loc168_29.1 (%T.as_type.73e) = name_ref x, %x // CHECK:STDOUT: %y.ref: @ModWith.loc168.%U.as_type.loc167_35.1 (%U.as_type.0bd) = name_ref y, %y @@ -1751,9 +1621,9 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // 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.0bd, constants.%ModWith.facet.297) [symbolic = %specific_impl_fn.loc170_5.2 (constants.%specific_impl_fn.6e9)] // 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_53.1 (%Result.as_type) = temporary_storage -// CHECK:STDOUT: %ModWith.WithSelf.Op.call: init @ModWith.loc168.%Result.as_type.loc167_53.1 (%Result.as_type) to %.loc170_5.2 = call %bound_method.loc170_5.2(%x.ref, %y.ref) -// CHECK:STDOUT: %.loc170_5.3: ref @ModWith.loc168.%Result.as_type.loc167_53.1 (%Result.as_type) = temporary %.loc170_5.2, %ModWith.WithSelf.Op.call +// CHECK:STDOUT: %.loc170_5.2: ref @ModWith.loc168.%Result.as_type.loc167_37 (%Result.as_type) = temporary_storage +// CHECK:STDOUT: %ModWith.WithSelf.Op.call: init @ModWith.loc168.%Result.as_type.loc167_37 (%Result.as_type) to %.loc170_5.2 = call %bound_method.loc170_5.2(%x.ref, %y.ref) +// CHECK:STDOUT: %.loc170_5.3: ref @ModWith.loc168.%Result.as_type.loc167_37 (%Result.as_type) = temporary %.loc170_5.2, %ModWith.WithSelf.Op.call // CHECK:STDOUT: %.loc170_5.4: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc165_9.1 (constants.%Result)] // CHECK:STDOUT: %.loc170_5.5: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc165_9.1 (constants.%Result)] // CHECK:STDOUT: @@ -1975,7 +1845,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %specific_impl_fn.loc296_3.2: = specific_impl_function %impl.elem1.loc296_3.2, @Negate.WithSelf.Op(%Negate.facet.loc296_3.3) [symbolic = %specific_impl_fn.loc296_3.2 (constants.%specific_impl_fn.9ba)] // CHECK:STDOUT: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%y.param: @TestNegate.%Result.as_type.loc293_49.1 (%Result.as_type), %x.param: @TestNegate.%T.as_type.loc294_24.1 (%T.as_type.735)) { +// CHECK:STDOUT: fn(%y.param: @TestNegate.%Result.as_type.loc293_33 (%Result.as_type), %x.param: @TestNegate.%T.as_type.loc294_24.1 (%T.as_type.735)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @TestNegate.%T.as_type.loc294_24.1 (%T.as_type.735) = name_ref x, %x // CHECK:STDOUT: %impl.elem1.loc296_3.1: @TestNegate.%.loc296_3.7 (%.70d) = impl_witness_access constants.%Negate.lookup_impl_witness.75a, element1 [symbolic = %impl.elem1.loc296_3.2 (constants.%impl.elem1.466)] @@ -1986,9 +1856,9 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %.loc296_3.2: %Negate.type = converted constants.%T.as_type.735, %Negate.facet.loc296_3.2 [symbolic = %Negate.facet.loc296_3.3 (constants.%Negate.facet.b7e)] // CHECK:STDOUT: %specific_impl_fn.loc296_3.1: = specific_impl_function %impl.elem1.loc296_3.1, @Negate.WithSelf.Op(constants.%Negate.facet.b7e) [symbolic = %specific_impl_fn.loc296_3.2 (constants.%specific_impl_fn.9ba)] // 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_49.1 (%Result.as_type) = temporary_storage -// CHECK:STDOUT: %Negate.WithSelf.Op.call: init @TestNegate.%Result.as_type.loc293_49.1 (%Result.as_type) to %.loc296_3.3 = call %bound_method.loc296_3.2(%x.ref) -// CHECK:STDOUT: %.loc296_3.4: ref @TestNegate.%Result.as_type.loc293_49.1 (%Result.as_type) = temporary %.loc296_3.3, %Negate.WithSelf.Op.call +// CHECK:STDOUT: %.loc296_3.3: ref @TestNegate.%Result.as_type.loc293_33 (%Result.as_type) = temporary_storage +// CHECK:STDOUT: %Negate.WithSelf.Op.call: init @TestNegate.%Result.as_type.loc293_33 (%Result.as_type) to %.loc296_3.3 = call %bound_method.loc296_3.2(%x.ref) +// CHECK:STDOUT: %.loc296_3.4: ref @TestNegate.%Result.as_type.loc293_33 (%Result.as_type) = temporary %.loc296_3.3, %Negate.WithSelf.Op.call // CHECK:STDOUT: %.loc296_3.5: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc292_9.1 (constants.%Result)] // CHECK:STDOUT: %.loc296_3.6: %Destroy.type = converted constants.%Result.as_type, constants.%Result [symbolic = %Result.loc292_9.1 (constants.%Result)] // CHECK:STDOUT: @@ -2006,16 +1876,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %AddWith.type.loc123_35.1 => constants.%AddWith.type.4f5 // CHECK:STDOUT: %facet_type.loc123_19 => constants.%facet_type.4f5 // CHECK:STDOUT: %.Self.frozen.loc123_37.1 => constants.%.Self.frozen.136 -// CHECK:STDOUT: %require_complete.loc123 => constants.%require_complete.528878.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.034 -// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.71f -// CHECK:STDOUT: %assoc0 => constants.%assoc0.155 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.1 => constants.%AddWith.lookup_impl_witness.0f3 -// CHECK:STDOUT: %impl.elem0.loc123_43.1 => constants.%impl.elem0.1cd -// CHECK:STDOUT: %Result.as_type.loc123_53.1 => constants.%Result.as_type // CHECK:STDOUT: %.Self => constants.%.Self.354 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.2 => constants.%AddWith.lookup_impl_witness.ab5 -// CHECK:STDOUT: %impl.elem0.loc123_43.2 => constants.%impl.elem0.2c2 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.ab5 +// CHECK:STDOUT: %impl.elem0.loc123_37 => constants.%impl.elem0.2c2 +// CHECK:STDOUT: %Result.as_type.loc123_37 => constants.%Result.as_type // CHECK:STDOUT: %facet_type.loc123_37 => constants.%facet_type.c17 // CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.fef // CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.910 @@ -2041,16 +1905,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.type.loc134_35.1 => constants.%SubWith.type.769 // CHECK:STDOUT: %facet_type.loc134_19 => constants.%facet_type.769 // CHECK:STDOUT: %.Self.frozen.loc134_37.1 => constants.%.Self.frozen.b13 -// CHECK:STDOUT: %require_complete.loc134 => constants.%require_complete.49f499.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.d1e -// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.5f0 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.a5d -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.1 => constants.%SubWith.lookup_impl_witness.fe8 -// CHECK:STDOUT: %impl.elem0.loc134_43.1 => constants.%impl.elem0.7da -// CHECK:STDOUT: %Result.as_type.loc134_53.1 => constants.%Result.as_type // CHECK:STDOUT: %.Self => constants.%.Self.4de -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.2 => constants.%SubWith.lookup_impl_witness.354 -// CHECK:STDOUT: %impl.elem0.loc134_43.2 => constants.%impl.elem0.3dc +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.354 +// CHECK:STDOUT: %impl.elem0.loc134_37 => constants.%impl.elem0.3dc +// CHECK:STDOUT: %Result.as_type.loc134_37 => constants.%Result.as_type // CHECK:STDOUT: %facet_type.loc134_37 => constants.%facet_type.0a9 // CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.a14 // CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.51b @@ -2076,16 +1934,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.type.loc145_35.1 => constants.%MulWith.type.b0b // CHECK:STDOUT: %facet_type.loc145_19 => constants.%facet_type.b0b // CHECK:STDOUT: %.Self.frozen.loc145_37.1 => constants.%.Self.frozen.a62 -// CHECK:STDOUT: %require_complete.loc145 => constants.%require_complete.8389d3.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.bd3 -// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.2e5 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.e89 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.1 => constants.%MulWith.lookup_impl_witness.136 -// CHECK:STDOUT: %impl.elem0.loc145_43.1 => constants.%impl.elem0.16c -// CHECK:STDOUT: %Result.as_type.loc145_53.1 => constants.%Result.as_type // CHECK:STDOUT: %.Self => constants.%.Self.a44 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.2 => constants.%MulWith.lookup_impl_witness.ced -// CHECK:STDOUT: %impl.elem0.loc145_43.2 => constants.%impl.elem0.0e8 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.ced +// CHECK:STDOUT: %impl.elem0.loc145_37 => constants.%impl.elem0.0e8 +// CHECK:STDOUT: %Result.as_type.loc145_37 => constants.%Result.as_type // CHECK:STDOUT: %facet_type.loc145_37 => constants.%facet_type.a5f // CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.3ab // CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.170 @@ -2111,16 +1963,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.type.loc156_35.1 => constants.%DivWith.type.71d // CHECK:STDOUT: %facet_type.loc156_19 => constants.%facet_type.71d // CHECK:STDOUT: %.Self.frozen.loc156_37.1 => constants.%.Self.frozen.575 -// CHECK:STDOUT: %require_complete.loc156 => constants.%require_complete.c4013f.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.a77 -// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.e65 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.48a -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.1 => constants.%DivWith.lookup_impl_witness.d5d -// CHECK:STDOUT: %impl.elem0.loc156_43.1 => constants.%impl.elem0.e77 -// CHECK:STDOUT: %Result.as_type.loc156_53.1 => constants.%Result.as_type // CHECK:STDOUT: %.Self => constants.%.Self.c58 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.2 => constants.%DivWith.lookup_impl_witness.f1d -// CHECK:STDOUT: %impl.elem0.loc156_43.2 => constants.%impl.elem0.af2 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.f1d +// CHECK:STDOUT: %impl.elem0.loc156_37 => constants.%impl.elem0.af2 +// CHECK:STDOUT: %Result.as_type.loc156_37 => constants.%Result.as_type // CHECK:STDOUT: %facet_type.loc156_37 => constants.%facet_type.351 // CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.ae7 // CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.32b @@ -2146,16 +1992,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.type.loc167_35.1 => constants.%ModWith.type.68a // CHECK:STDOUT: %facet_type.loc167_19 => constants.%facet_type.68a // CHECK:STDOUT: %.Self.frozen.loc167_37.1 => constants.%.Self.frozen.e0d -// CHECK:STDOUT: %require_complete.loc167 => constants.%require_complete.312803.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.01e -// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.9c3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.cb9 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.1 => constants.%ModWith.lookup_impl_witness.4ec -// CHECK:STDOUT: %impl.elem0.loc167_43.1 => constants.%impl.elem0.671 -// CHECK:STDOUT: %Result.as_type.loc167_53.1 => constants.%Result.as_type // CHECK:STDOUT: %.Self => constants.%.Self.2c1 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.2 => constants.%ModWith.lookup_impl_witness.930 -// CHECK:STDOUT: %impl.elem0.loc167_43.2 => constants.%impl.elem0.e6d +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.930 +// CHECK:STDOUT: %impl.elem0.loc167_37 => constants.%impl.elem0.e6d +// CHECK:STDOUT: %Result.as_type.loc167_37 => constants.%Result.as_type // CHECK:STDOUT: %facet_type.loc167_37 => constants.%facet_type.938 // CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.b1e // CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.721 @@ -2181,16 +2021,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %AddWith.type.loc123_35.1 => constants.%AddWith.type.e4b // CHECK:STDOUT: %facet_type.loc123_19 => constants.%facet_type.e4b // CHECK:STDOUT: %.Self.frozen.loc123_37.1 => constants.%.Self.frozen.ea9 -// CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.f37bc8.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.ceb -// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.86e -// CHECK:STDOUT: %assoc0 => constants.%assoc0.30c -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.1 => constants.%AddWith.lookup_impl_witness.e18 -// CHECK:STDOUT: %impl.elem0.loc123_43.1 => constants.%impl.elem0.de3 -// CHECK:STDOUT: %Result.as_type.loc123_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.033 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.2 => constants.%AddWith.lookup_impl_witness.73e -// CHECK:STDOUT: %impl.elem0.loc123_43.2 => constants.%impl.elem0.08e +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.73e +// CHECK:STDOUT: %impl.elem0.loc123_37 => constants.%impl.elem0.08e +// CHECK:STDOUT: %Result.as_type.loc123_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc123_37 => constants.%facet_type.5b8 // CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.f83 // CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.056 @@ -2210,7 +2044,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc124_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_27 => constants.%complete_type.2da // CHECK:STDOUT: %require_complete.loc124_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.f37bc8.2 +// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.f37 +// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.86e // CHECK:STDOUT: %assoc1 => constants.%assoc1.9bf // CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126 => constants.%custom_witness.cba // CHECK:STDOUT: %AddWith.facet => constants.%AddWith.facet.2ce @@ -2230,16 +2065,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.type.loc134_35.1 => constants.%SubWith.type.68d // CHECK:STDOUT: %facet_type.loc134_19 => constants.%facet_type.68d // CHECK:STDOUT: %.Self.frozen.loc134_37.1 => constants.%.Self.frozen.0c9 -// CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.8a2f63.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.471 -// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dd6 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.dfb -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.1 => constants.%SubWith.lookup_impl_witness.379 -// CHECK:STDOUT: %impl.elem0.loc134_43.1 => constants.%impl.elem0.e78 -// CHECK:STDOUT: %Result.as_type.loc134_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.a10 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.2 => constants.%SubWith.lookup_impl_witness.c4d -// CHECK:STDOUT: %impl.elem0.loc134_43.2 => constants.%impl.elem0.22a +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.c4d +// CHECK:STDOUT: %impl.elem0.loc134_37 => constants.%impl.elem0.22a +// CHECK:STDOUT: %Result.as_type.loc134_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc134_37 => constants.%facet_type.5db // CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.7bf // CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.f08 @@ -2259,7 +2088,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc135_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_27 => constants.%complete_type.2da // CHECK:STDOUT: %require_complete.loc135_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.8a2f63.2 +// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.8a2 +// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dd6 // CHECK:STDOUT: %assoc1 => constants.%assoc1.ada // CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137 => constants.%custom_witness.354 // CHECK:STDOUT: %SubWith.facet => constants.%SubWith.facet.1ef @@ -2279,16 +2109,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.type.loc145_35.1 => constants.%MulWith.type.f65 // CHECK:STDOUT: %facet_type.loc145_19 => constants.%facet_type.f65 // CHECK:STDOUT: %.Self.frozen.loc145_37.1 => constants.%.Self.frozen.aec -// CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.8c670c.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.34d -// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.4c3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.6ec -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.1 => constants.%MulWith.lookup_impl_witness.94b -// CHECK:STDOUT: %impl.elem0.loc145_43.1 => constants.%impl.elem0.212 -// CHECK:STDOUT: %Result.as_type.loc145_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.1e8 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.2 => constants.%MulWith.lookup_impl_witness.b4a -// CHECK:STDOUT: %impl.elem0.loc145_43.2 => constants.%impl.elem0.088 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.b4a +// CHECK:STDOUT: %impl.elem0.loc145_37 => constants.%impl.elem0.088 +// CHECK:STDOUT: %Result.as_type.loc145_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc145_37 => constants.%facet_type.1c9 // CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.2f6 // CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.e8a @@ -2308,7 +2132,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc146_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_27 => constants.%complete_type.2da // CHECK:STDOUT: %require_complete.loc146_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.8c670c.2 +// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.8c6 +// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.4c3 // CHECK:STDOUT: %assoc1 => constants.%assoc1.b14 // CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148 => constants.%custom_witness.3c3 // CHECK:STDOUT: %MulWith.facet => constants.%MulWith.facet.d84 @@ -2328,16 +2153,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.type.loc156_35.1 => constants.%DivWith.type.b8a // CHECK:STDOUT: %facet_type.loc156_19 => constants.%facet_type.b8a // CHECK:STDOUT: %.Self.frozen.loc156_37.1 => constants.%.Self.frozen.ff8 -// CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.d99d66.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.2d9 -// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.712 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.99c -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.1 => constants.%DivWith.lookup_impl_witness.483 -// CHECK:STDOUT: %impl.elem0.loc156_43.1 => constants.%impl.elem0.f9d -// CHECK:STDOUT: %Result.as_type.loc156_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.74d -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.2 => constants.%DivWith.lookup_impl_witness.afb -// CHECK:STDOUT: %impl.elem0.loc156_43.2 => constants.%impl.elem0.6cf +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.afb +// CHECK:STDOUT: %impl.elem0.loc156_37 => constants.%impl.elem0.6cf +// CHECK:STDOUT: %Result.as_type.loc156_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc156_37 => constants.%facet_type.ee9 // CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.575 // CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.257 @@ -2357,7 +2176,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc157_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_27 => constants.%complete_type.2da // CHECK:STDOUT: %require_complete.loc157_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.d99d66.2 +// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.d99 +// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.712 // CHECK:STDOUT: %assoc1 => constants.%assoc1.fb6 // CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159 => constants.%custom_witness.8d0 // CHECK:STDOUT: %DivWith.facet => constants.%DivWith.facet.4ad @@ -2377,16 +2197,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.type.loc167_35.1 => constants.%ModWith.type.c67 // CHECK:STDOUT: %facet_type.loc167_19 => constants.%facet_type.c67 // CHECK:STDOUT: %.Self.frozen.loc167_37.1 => constants.%.Self.frozen.13f -// CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.7d80e1.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.cb4 -// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.5f6 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.f04 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.1 => constants.%ModWith.lookup_impl_witness.0af -// CHECK:STDOUT: %impl.elem0.loc167_43.1 => constants.%impl.elem0.d91 -// CHECK:STDOUT: %Result.as_type.loc167_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.71c -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.2 => constants.%ModWith.lookup_impl_witness.c2a -// CHECK:STDOUT: %impl.elem0.loc167_43.2 => constants.%impl.elem0.14c +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.c2a +// CHECK:STDOUT: %impl.elem0.loc167_37 => constants.%impl.elem0.14c +// CHECK:STDOUT: %Result.as_type.loc167_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc167_37 => constants.%facet_type.fe4 // CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.330 // CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.5c0 @@ -2406,7 +2220,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc168_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_27 => constants.%complete_type.2da // CHECK:STDOUT: %require_complete.loc168_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.7d80e1.2 +// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.7d8 +// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.5f6 // CHECK:STDOUT: %assoc1 => constants.%assoc1.d19 // CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170 => constants.%custom_witness.169 // CHECK:STDOUT: %ModWith.facet => constants.%ModWith.facet.ab1 @@ -2426,16 +2241,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %AddWith.type.loc123_35.1 => constants.%AddWith.type.2ed // CHECK:STDOUT: %facet_type.loc123_19 => constants.%facet_type.2ed // CHECK:STDOUT: %.Self.frozen.loc123_37.1 => constants.%.Self.frozen.17a -// CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.32de8b.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.8c1 -// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.18f -// CHECK:STDOUT: %assoc0 => constants.%assoc0.b7d -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.1 => constants.%AddWith.lookup_impl_witness.03c -// CHECK:STDOUT: %impl.elem0.loc123_43.1 => constants.%impl.elem0.719 -// CHECK:STDOUT: %Result.as_type.loc123_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.737 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.2 => constants.%AddWith.lookup_impl_witness.de0 -// CHECK:STDOUT: %impl.elem0.loc123_43.2 => constants.%impl.elem0.025 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.de0 +// CHECK:STDOUT: %impl.elem0.loc123_37 => constants.%impl.elem0.025 +// CHECK:STDOUT: %Result.as_type.loc123_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc123_37 => constants.%facet_type.9dd // CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.b6f // CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.b9b @@ -2455,7 +2264,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc124_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_33 => constants.%complete_type.2da -// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.32de8b.2 +// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.32d +// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.18f // CHECK:STDOUT: %assoc1 => constants.%assoc1.e08 // CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126 => constants.%custom_witness.b79 // CHECK:STDOUT: %AddWith.facet => constants.%AddWith.facet.11e @@ -2475,16 +2285,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.type.loc134_35.1 => constants.%SubWith.type.606 // CHECK:STDOUT: %facet_type.loc134_19 => constants.%facet_type.606 // CHECK:STDOUT: %.Self.frozen.loc134_37.1 => constants.%.Self.frozen.6eb -// CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.75c188.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.fe6 -// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.9c3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.f66 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.1 => constants.%SubWith.lookup_impl_witness.183 -// CHECK:STDOUT: %impl.elem0.loc134_43.1 => constants.%impl.elem0.cc9 -// CHECK:STDOUT: %Result.as_type.loc134_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.220 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.2 => constants.%SubWith.lookup_impl_witness.ebb -// CHECK:STDOUT: %impl.elem0.loc134_43.2 => constants.%impl.elem0.1b2 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.ebb +// CHECK:STDOUT: %impl.elem0.loc134_37 => constants.%impl.elem0.1b2 +// CHECK:STDOUT: %Result.as_type.loc134_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc134_37 => constants.%facet_type.1a3 // CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.8ce // CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.88b @@ -2504,7 +2308,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc135_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_33 => constants.%complete_type.2da -// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.75c188.2 +// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.75c +// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.9c3 // CHECK:STDOUT: %assoc1 => constants.%assoc1.144 // CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137 => constants.%custom_witness.1e8 // CHECK:STDOUT: %SubWith.facet => constants.%SubWith.facet.6fa @@ -2524,16 +2329,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.type.loc145_35.1 => constants.%MulWith.type.1e2 // CHECK:STDOUT: %facet_type.loc145_19 => constants.%facet_type.1e2 // CHECK:STDOUT: %.Self.frozen.loc145_37.1 => constants.%.Self.frozen.a99 -// CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.a7adcd.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.6f1 -// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.34c -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2d4 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.1 => constants.%MulWith.lookup_impl_witness.7ca -// CHECK:STDOUT: %impl.elem0.loc145_43.1 => constants.%impl.elem0.c79 -// CHECK:STDOUT: %Result.as_type.loc145_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.c91 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.2 => constants.%MulWith.lookup_impl_witness.04e -// CHECK:STDOUT: %impl.elem0.loc145_43.2 => constants.%impl.elem0.0df +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.04e +// CHECK:STDOUT: %impl.elem0.loc145_37 => constants.%impl.elem0.0df +// CHECK:STDOUT: %Result.as_type.loc145_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc145_37 => constants.%facet_type.26b // CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.2a0 // CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.c4b @@ -2553,7 +2352,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc146_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_33 => constants.%complete_type.2da -// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.a7adcd.2 +// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.a7a +// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.34c // CHECK:STDOUT: %assoc1 => constants.%assoc1.635 // CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148 => constants.%custom_witness.e2b // CHECK:STDOUT: %MulWith.facet => constants.%MulWith.facet.8b1 @@ -2573,16 +2373,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.type.loc156_35.1 => constants.%DivWith.type.45d // CHECK:STDOUT: %facet_type.loc156_19 => constants.%facet_type.45d // CHECK:STDOUT: %.Self.frozen.loc156_37.1 => constants.%.Self.frozen.52f -// CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.d57eaf.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.8c0 -// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.5a4 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.156 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.1 => constants.%DivWith.lookup_impl_witness.5df -// CHECK:STDOUT: %impl.elem0.loc156_43.1 => constants.%impl.elem0.967 -// CHECK:STDOUT: %Result.as_type.loc156_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.327 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.2 => constants.%DivWith.lookup_impl_witness.851 -// CHECK:STDOUT: %impl.elem0.loc156_43.2 => constants.%impl.elem0.833 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.851 +// CHECK:STDOUT: %impl.elem0.loc156_37 => constants.%impl.elem0.833 +// CHECK:STDOUT: %Result.as_type.loc156_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc156_37 => constants.%facet_type.cb9 // CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.264 // CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.19d @@ -2602,7 +2396,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc157_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_33 => constants.%complete_type.2da -// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.d57eaf.2 +// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.d57 +// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.5a4 // CHECK:STDOUT: %assoc1 => constants.%assoc1.444 // CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159 => constants.%custom_witness.21db // CHECK:STDOUT: %DivWith.facet => constants.%DivWith.facet.57c @@ -2622,16 +2417,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.type.loc167_35.1 => constants.%ModWith.type.104 // CHECK:STDOUT: %facet_type.loc167_19 => constants.%facet_type.104 // CHECK:STDOUT: %.Self.frozen.loc167_37.1 => constants.%.Self.frozen.b7c -// CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.4d792a.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.e20 -// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.0e9 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.92c -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.1 => constants.%ModWith.lookup_impl_witness.a99 -// CHECK:STDOUT: %impl.elem0.loc167_43.1 => constants.%impl.elem0.b94 -// CHECK:STDOUT: %Result.as_type.loc167_53.1 => constants.%Int16 // CHECK:STDOUT: %.Self => constants.%.Self.6a7 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.2 => constants.%ModWith.lookup_impl_witness.177 -// CHECK:STDOUT: %impl.elem0.loc167_43.2 => constants.%impl.elem0.d83 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.177 +// CHECK:STDOUT: %impl.elem0.loc167_37 => constants.%impl.elem0.d83 +// CHECK:STDOUT: %Result.as_type.loc167_37 => constants.%Int16 // CHECK:STDOUT: %facet_type.loc167_37 => constants.%facet_type.70f // CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.4c3 // CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.cf6 @@ -2651,7 +2440,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc168_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_33 => constants.%complete_type.2da -// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.4d792a.2 +// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.4d7 +// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.0e9 // CHECK:STDOUT: %assoc1 => constants.%assoc1.870 // CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170 => constants.%custom_witness.6dd // CHECK:STDOUT: %ModWith.facet => constants.%ModWith.facet.f5a5 @@ -2671,16 +2461,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %AddWith.type.loc123_35.1 => constants.%AddWith.type.db7 // CHECK:STDOUT: %facet_type.loc123_19 => constants.%facet_type.db7 // CHECK:STDOUT: %.Self.frozen.loc123_37.1 => constants.%.Self.frozen.bc4 -// CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.758ea8.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.447 -// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.be8 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.31c -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.1 => constants.%AddWith.lookup_impl_witness.a9e -// CHECK:STDOUT: %impl.elem0.loc123_43.1 => constants.%impl.elem0.517 -// CHECK:STDOUT: %Result.as_type.loc123_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.6a9 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.2 => constants.%AddWith.lookup_impl_witness.f6c -// CHECK:STDOUT: %impl.elem0.loc123_43.2 => constants.%impl.elem0.a74 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.f6c +// CHECK:STDOUT: %impl.elem0.loc123_37 => constants.%impl.elem0.a74 +// CHECK:STDOUT: %Result.as_type.loc123_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc123_37 => constants.%facet_type.bf5 // CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.eea // CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.79b @@ -2700,7 +2484,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc124_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.758ea8.2 +// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.758 +// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.be8 // CHECK:STDOUT: %assoc1 => constants.%assoc1.86c // CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126 => constants.%custom_witness.513476.1 // CHECK:STDOUT: %AddWith.facet => constants.%AddWith.facet.8f8 @@ -2720,16 +2505,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.type.loc134_35.1 => constants.%SubWith.type.120 // CHECK:STDOUT: %facet_type.loc134_19 => constants.%facet_type.120 // CHECK:STDOUT: %.Self.frozen.loc134_37.1 => constants.%.Self.frozen.faf -// CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.46ea3c.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.ea6 -// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dae -// CHECK:STDOUT: %assoc0 => constants.%assoc0.fac -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.1 => constants.%SubWith.lookup_impl_witness.c4f -// CHECK:STDOUT: %impl.elem0.loc134_43.1 => constants.%impl.elem0.b5a -// CHECK:STDOUT: %Result.as_type.loc134_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.861 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.2 => constants.%SubWith.lookup_impl_witness.4cf -// CHECK:STDOUT: %impl.elem0.loc134_43.2 => constants.%impl.elem0.94c +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.4cf +// CHECK:STDOUT: %impl.elem0.loc134_37 => constants.%impl.elem0.94c +// CHECK:STDOUT: %Result.as_type.loc134_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc134_37 => constants.%facet_type.b03 // CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.110 // CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.e31 @@ -2749,7 +2528,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc135_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.46ea3c.2 +// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.46e +// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dae // CHECK:STDOUT: %assoc1 => constants.%assoc1.147 // CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137 => constants.%custom_witness.32cef1.1 // CHECK:STDOUT: %SubWith.facet => constants.%SubWith.facet.0b0 @@ -2769,16 +2549,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.type.loc145_35.1 => constants.%MulWith.type.d67 // CHECK:STDOUT: %facet_type.loc145_19 => constants.%facet_type.d67b // CHECK:STDOUT: %.Self.frozen.loc145_37.1 => constants.%.Self.frozen.c7a -// CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.920626.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.c47 -// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.ab1 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.d0a -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.1 => constants.%MulWith.lookup_impl_witness.ab5 -// CHECK:STDOUT: %impl.elem0.loc145_43.1 => constants.%impl.elem0.6ef -// CHECK:STDOUT: %Result.as_type.loc145_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.cb9 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.2 => constants.%MulWith.lookup_impl_witness.4ca -// CHECK:STDOUT: %impl.elem0.loc145_43.2 => constants.%impl.elem0.311 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.4ca +// CHECK:STDOUT: %impl.elem0.loc145_37 => constants.%impl.elem0.311 +// CHECK:STDOUT: %Result.as_type.loc145_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc145_37 => constants.%facet_type.b52 // CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.f70 // CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.040 @@ -2798,7 +2572,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc146_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.920626.2 +// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.920 +// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.ab1 // CHECK:STDOUT: %assoc1 => constants.%assoc1.349 // CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148 => constants.%custom_witness.3a0675.1 // CHECK:STDOUT: %MulWith.facet => constants.%MulWith.facet.4b9 @@ -2818,16 +2593,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.type.loc156_35.1 => constants.%DivWith.type.5a1 // CHECK:STDOUT: %facet_type.loc156_19 => constants.%facet_type.5a1 // CHECK:STDOUT: %.Self.frozen.loc156_37.1 => constants.%.Self.frozen.057 -// CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.348fba.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.cc3 -// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.22f -// CHECK:STDOUT: %assoc0 => constants.%assoc0.a9d -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.1 => constants.%DivWith.lookup_impl_witness.ca2 -// CHECK:STDOUT: %impl.elem0.loc156_43.1 => constants.%impl.elem0.14b -// CHECK:STDOUT: %Result.as_type.loc156_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.208 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.2 => constants.%DivWith.lookup_impl_witness.0ac -// CHECK:STDOUT: %impl.elem0.loc156_43.2 => constants.%impl.elem0.437 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.0ac +// CHECK:STDOUT: %impl.elem0.loc156_37 => constants.%impl.elem0.437 +// CHECK:STDOUT: %Result.as_type.loc156_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc156_37 => constants.%facet_type.f29 // CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.3d3 // CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.db7 @@ -2847,7 +2616,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc157_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.348fba.2 +// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.348 +// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.22f // CHECK:STDOUT: %assoc1 => constants.%assoc1.004 // CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159 => constants.%custom_witness.c32685.1 // CHECK:STDOUT: %DivWith.facet => constants.%DivWith.facet.5c5 @@ -2867,16 +2637,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.type.loc167_35.1 => constants.%ModWith.type.794 // CHECK:STDOUT: %facet_type.loc167_19 => constants.%facet_type.794 // CHECK:STDOUT: %.Self.frozen.loc167_37.1 => constants.%.Self.frozen.813 -// CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.cc95ce.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.f4a -// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.021 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.310 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.1 => constants.%ModWith.lookup_impl_witness.efb -// CHECK:STDOUT: %impl.elem0.loc167_43.1 => constants.%impl.elem0.e83 -// CHECK:STDOUT: %Result.as_type.loc167_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.618 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.2 => constants.%ModWith.lookup_impl_witness.01c -// CHECK:STDOUT: %impl.elem0.loc167_43.2 => constants.%impl.elem0.3bb +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.01c +// CHECK:STDOUT: %impl.elem0.loc167_37 => constants.%impl.elem0.3bb +// CHECK:STDOUT: %Result.as_type.loc167_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc167_37 => constants.%facet_type.3d9 // CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.f5f // CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.27e @@ -2896,7 +2660,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc168_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.cc95ce.2 +// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.cc9 +// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.021 // CHECK:STDOUT: %assoc1 => constants.%assoc1.2eb // CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170 => constants.%custom_witness.994c75.1 // CHECK:STDOUT: %ModWith.facet => constants.%ModWith.facet.cc5 @@ -2916,16 +2681,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %AddWith.type.loc123_35.1 => constants.%AddWith.type.e4b // CHECK:STDOUT: %facet_type.loc123_19 => constants.%facet_type.e4b // CHECK:STDOUT: %.Self.frozen.loc123_37.1 => constants.%.Self.frozen.ea9 -// CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.f37bc8.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.ceb -// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.86e -// CHECK:STDOUT: %assoc0 => constants.%assoc0.30c -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.1 => constants.%AddWith.lookup_impl_witness.e18 -// CHECK:STDOUT: %impl.elem0.loc123_43.1 => constants.%impl.elem0.de3 -// CHECK:STDOUT: %Result.as_type.loc123_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.033 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.2 => constants.%AddWith.lookup_impl_witness.73e -// CHECK:STDOUT: %impl.elem0.loc123_43.2 => constants.%impl.elem0.08e +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.73e +// CHECK:STDOUT: %impl.elem0.loc123_37 => constants.%impl.elem0.08e +// CHECK:STDOUT: %Result.as_type.loc123_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc123_37 => constants.%facet_type.177 // CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.f16 // CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.4c6 @@ -2945,7 +2704,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc124_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.f37bc8.2 +// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.f37 +// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.86e // CHECK:STDOUT: %assoc1 => constants.%assoc1.9bf // CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126 => constants.%custom_witness.ea1 // CHECK:STDOUT: %AddWith.facet => constants.%AddWith.facet.b31 @@ -2965,16 +2725,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.type.loc134_35.1 => constants.%SubWith.type.68d // CHECK:STDOUT: %facet_type.loc134_19 => constants.%facet_type.68d // CHECK:STDOUT: %.Self.frozen.loc134_37.1 => constants.%.Self.frozen.0c9 -// CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.8a2f63.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.471 -// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dd6 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.dfb -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.1 => constants.%SubWith.lookup_impl_witness.379 -// CHECK:STDOUT: %impl.elem0.loc134_43.1 => constants.%impl.elem0.e78 -// CHECK:STDOUT: %Result.as_type.loc134_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.a10 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.2 => constants.%SubWith.lookup_impl_witness.c4d -// CHECK:STDOUT: %impl.elem0.loc134_43.2 => constants.%impl.elem0.22a +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.c4d +// CHECK:STDOUT: %impl.elem0.loc134_37 => constants.%impl.elem0.22a +// CHECK:STDOUT: %Result.as_type.loc134_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc134_37 => constants.%facet_type.760 // CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.524 // CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.83d @@ -2994,7 +2748,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc135_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.8a2f63.2 +// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.8a2 +// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dd6 // CHECK:STDOUT: %assoc1 => constants.%assoc1.ada // CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137 => constants.%custom_witness.576f // CHECK:STDOUT: %SubWith.facet => constants.%SubWith.facet.d30 @@ -3014,16 +2769,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.type.loc145_35.1 => constants.%MulWith.type.f65 // CHECK:STDOUT: %facet_type.loc145_19 => constants.%facet_type.f65 // CHECK:STDOUT: %.Self.frozen.loc145_37.1 => constants.%.Self.frozen.aec -// CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.8c670c.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.34d -// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.4c3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.6ec -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.1 => constants.%MulWith.lookup_impl_witness.94b -// CHECK:STDOUT: %impl.elem0.loc145_43.1 => constants.%impl.elem0.212 -// CHECK:STDOUT: %Result.as_type.loc145_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.1e8 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.2 => constants.%MulWith.lookup_impl_witness.b4a -// CHECK:STDOUT: %impl.elem0.loc145_43.2 => constants.%impl.elem0.088 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.b4a +// CHECK:STDOUT: %impl.elem0.loc145_37 => constants.%impl.elem0.088 +// CHECK:STDOUT: %Result.as_type.loc145_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc145_37 => constants.%facet_type.1cc // CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.89d // CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.b89 @@ -3043,7 +2792,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc146_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.8c670c.2 +// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.8c6 +// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.4c3 // CHECK:STDOUT: %assoc1 => constants.%assoc1.b14 // CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148 => constants.%custom_witness.751 // CHECK:STDOUT: %MulWith.facet => constants.%MulWith.facet.cd8 @@ -3063,16 +2813,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.type.loc156_35.1 => constants.%DivWith.type.b8a // CHECK:STDOUT: %facet_type.loc156_19 => constants.%facet_type.b8a // CHECK:STDOUT: %.Self.frozen.loc156_37.1 => constants.%.Self.frozen.ff8 -// CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.d99d66.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.2d9 -// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.712 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.99c -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.1 => constants.%DivWith.lookup_impl_witness.483 -// CHECK:STDOUT: %impl.elem0.loc156_43.1 => constants.%impl.elem0.f9d -// CHECK:STDOUT: %Result.as_type.loc156_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.74d -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.2 => constants.%DivWith.lookup_impl_witness.afb -// CHECK:STDOUT: %impl.elem0.loc156_43.2 => constants.%impl.elem0.6cf +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.afb +// CHECK:STDOUT: %impl.elem0.loc156_37 => constants.%impl.elem0.6cf +// CHECK:STDOUT: %Result.as_type.loc156_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc156_37 => constants.%facet_type.8ff // CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.d01 // CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.832 @@ -3092,7 +2836,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc157_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.d99d66.2 +// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.d99 +// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.712 // CHECK:STDOUT: %assoc1 => constants.%assoc1.fb6 // CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159 => constants.%custom_witness.9ad // CHECK:STDOUT: %DivWith.facet => constants.%DivWith.facet.d6b @@ -3112,16 +2857,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.type.loc167_35.1 => constants.%ModWith.type.c67 // CHECK:STDOUT: %facet_type.loc167_19 => constants.%facet_type.c67 // CHECK:STDOUT: %.Self.frozen.loc167_37.1 => constants.%.Self.frozen.13f -// CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.7d80e1.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.cb4 -// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.5f6 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.f04 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.1 => constants.%ModWith.lookup_impl_witness.0af -// CHECK:STDOUT: %impl.elem0.loc167_43.1 => constants.%impl.elem0.d91 -// CHECK:STDOUT: %Result.as_type.loc167_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.71c -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.2 => constants.%ModWith.lookup_impl_witness.c2a -// CHECK:STDOUT: %impl.elem0.loc167_43.2 => constants.%impl.elem0.14c +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.c2a +// CHECK:STDOUT: %impl.elem0.loc167_37 => constants.%impl.elem0.14c +// CHECK:STDOUT: %Result.as_type.loc167_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc167_37 => constants.%facet_type.960 // CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.3be // CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.c9a @@ -3141,7 +2880,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc168_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.7d80e1.2 +// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.7d8 +// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.5f6 // CHECK:STDOUT: %assoc1 => constants.%assoc1.d19 // CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170 => constants.%custom_witness.8a2 // CHECK:STDOUT: %ModWith.facet => constants.%ModWith.facet.9d1 @@ -3161,16 +2901,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %AddWith.type.loc123_35.1 => constants.%AddWith.type.db7 // CHECK:STDOUT: %facet_type.loc123_19 => constants.%facet_type.db7 // CHECK:STDOUT: %.Self.frozen.loc123_37.1 => constants.%.Self.frozen.bc4 -// CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.758ea8.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.447 -// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.be8 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.31c -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.1 => constants.%AddWith.lookup_impl_witness.a9e -// CHECK:STDOUT: %impl.elem0.loc123_43.1 => constants.%impl.elem0.517 -// CHECK:STDOUT: %Result.as_type.loc123_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.6a9 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.2 => constants.%AddWith.lookup_impl_witness.f6c -// CHECK:STDOUT: %impl.elem0.loc123_43.2 => constants.%impl.elem0.a74 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.f6c +// CHECK:STDOUT: %impl.elem0.loc123_37 => constants.%impl.elem0.a74 +// CHECK:STDOUT: %Result.as_type.loc123_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc123_37 => constants.%facet_type.bf5 // CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.eea // CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.79b @@ -3190,7 +2924,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc124_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.758ea8.2 +// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.758 +// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.be8 // CHECK:STDOUT: %assoc1 => constants.%assoc1.86c // CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126 => constants.%custom_witness.513476.2 // CHECK:STDOUT: %AddWith.facet => constants.%AddWith.facet.684 @@ -3210,16 +2945,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.type.loc134_35.1 => constants.%SubWith.type.120 // CHECK:STDOUT: %facet_type.loc134_19 => constants.%facet_type.120 // CHECK:STDOUT: %.Self.frozen.loc134_37.1 => constants.%.Self.frozen.faf -// CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.46ea3c.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.ea6 -// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dae -// CHECK:STDOUT: %assoc0 => constants.%assoc0.fac -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.1 => constants.%SubWith.lookup_impl_witness.c4f -// CHECK:STDOUT: %impl.elem0.loc134_43.1 => constants.%impl.elem0.b5a -// CHECK:STDOUT: %Result.as_type.loc134_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.861 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.2 => constants.%SubWith.lookup_impl_witness.4cf -// CHECK:STDOUT: %impl.elem0.loc134_43.2 => constants.%impl.elem0.94c +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.4cf +// CHECK:STDOUT: %impl.elem0.loc134_37 => constants.%impl.elem0.94c +// CHECK:STDOUT: %Result.as_type.loc134_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc134_37 => constants.%facet_type.b03 // CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.110 // CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.e31 @@ -3239,7 +2968,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc135_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.46ea3c.2 +// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.46e +// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dae // CHECK:STDOUT: %assoc1 => constants.%assoc1.147 // CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137 => constants.%custom_witness.32cef1.2 // CHECK:STDOUT: %SubWith.facet => constants.%SubWith.facet.a46 @@ -3259,16 +2989,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.type.loc145_35.1 => constants.%MulWith.type.d67 // CHECK:STDOUT: %facet_type.loc145_19 => constants.%facet_type.d67b // CHECK:STDOUT: %.Self.frozen.loc145_37.1 => constants.%.Self.frozen.c7a -// CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.920626.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.c47 -// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.ab1 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.d0a -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.1 => constants.%MulWith.lookup_impl_witness.ab5 -// CHECK:STDOUT: %impl.elem0.loc145_43.1 => constants.%impl.elem0.6ef -// CHECK:STDOUT: %Result.as_type.loc145_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.cb9 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.2 => constants.%MulWith.lookup_impl_witness.4ca -// CHECK:STDOUT: %impl.elem0.loc145_43.2 => constants.%impl.elem0.311 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.4ca +// CHECK:STDOUT: %impl.elem0.loc145_37 => constants.%impl.elem0.311 +// CHECK:STDOUT: %Result.as_type.loc145_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc145_37 => constants.%facet_type.b52 // CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.f70 // CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.040 @@ -3288,7 +3012,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc146_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.920626.2 +// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.920 +// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.ab1 // CHECK:STDOUT: %assoc1 => constants.%assoc1.349 // CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148 => constants.%custom_witness.3a0675.2 // CHECK:STDOUT: %MulWith.facet => constants.%MulWith.facet.3ab @@ -3308,16 +3033,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.type.loc156_35.1 => constants.%DivWith.type.5a1 // CHECK:STDOUT: %facet_type.loc156_19 => constants.%facet_type.5a1 // CHECK:STDOUT: %.Self.frozen.loc156_37.1 => constants.%.Self.frozen.057 -// CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.348fba.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.cc3 -// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.22f -// CHECK:STDOUT: %assoc0 => constants.%assoc0.a9d -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.1 => constants.%DivWith.lookup_impl_witness.ca2 -// CHECK:STDOUT: %impl.elem0.loc156_43.1 => constants.%impl.elem0.14b -// CHECK:STDOUT: %Result.as_type.loc156_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.208 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.2 => constants.%DivWith.lookup_impl_witness.0ac -// CHECK:STDOUT: %impl.elem0.loc156_43.2 => constants.%impl.elem0.437 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.0ac +// CHECK:STDOUT: %impl.elem0.loc156_37 => constants.%impl.elem0.437 +// CHECK:STDOUT: %Result.as_type.loc156_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc156_37 => constants.%facet_type.f29 // CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.3d3 // CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.db7 @@ -3337,7 +3056,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc157_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.348fba.2 +// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.348 +// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.22f // CHECK:STDOUT: %assoc1 => constants.%assoc1.004 // CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159 => constants.%custom_witness.c32685.2 // CHECK:STDOUT: %DivWith.facet => constants.%DivWith.facet.b4a @@ -3357,16 +3077,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.type.loc167_35.1 => constants.%ModWith.type.794 // CHECK:STDOUT: %facet_type.loc167_19 => constants.%facet_type.794 // CHECK:STDOUT: %.Self.frozen.loc167_37.1 => constants.%.Self.frozen.813 -// CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.cc95ce.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.f4a -// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.021 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.310 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.1 => constants.%ModWith.lookup_impl_witness.efb -// CHECK:STDOUT: %impl.elem0.loc167_43.1 => constants.%impl.elem0.e83 -// CHECK:STDOUT: %Result.as_type.loc167_53.1 => constants.%Int32 // CHECK:STDOUT: %.Self => constants.%.Self.618 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.2 => constants.%ModWith.lookup_impl_witness.01c -// CHECK:STDOUT: %impl.elem0.loc167_43.2 => constants.%impl.elem0.3bb +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.01c +// CHECK:STDOUT: %impl.elem0.loc167_37 => constants.%impl.elem0.3bb +// CHECK:STDOUT: %Result.as_type.loc167_37 => constants.%Int32 // CHECK:STDOUT: %facet_type.loc167_37 => constants.%facet_type.3d9 // CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.f5f // CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.27e @@ -3386,7 +3100,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc168_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.cc95ce.2 +// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.cc9 +// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.021 // CHECK:STDOUT: %assoc1 => constants.%assoc1.2eb // CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170 => constants.%custom_witness.994c75.2 // CHECK:STDOUT: %ModWith.facet => constants.%ModWith.facet.3dc @@ -3406,16 +3121,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %AddWith.type.loc123_35.1 => constants.%AddWith.type.1ff // CHECK:STDOUT: %facet_type.loc123_19 => constants.%facet_type.1ff // CHECK:STDOUT: %.Self.frozen.loc123_37.1 => constants.%.Self.frozen.91a -// CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.57be9d.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.a1b -// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.97f -// CHECK:STDOUT: %assoc0 => constants.%assoc0.f02 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.1 => constants.%AddWith.lookup_impl_witness.30a -// CHECK:STDOUT: %impl.elem0.loc123_43.1 => constants.%impl.elem0.b7d -// CHECK:STDOUT: %Result.as_type.loc123_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.f92 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.2 => constants.%AddWith.lookup_impl_witness.96d -// CHECK:STDOUT: %impl.elem0.loc123_43.2 => constants.%impl.elem0.516 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.96d +// CHECK:STDOUT: %impl.elem0.loc123_37 => constants.%impl.elem0.516 +// CHECK:STDOUT: %Result.as_type.loc123_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc123_37 => constants.%facet_type.dab // CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.652 // CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.cb1 @@ -3435,7 +3144,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc124_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.57be9d.2 +// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.57b +// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.97f // CHECK:STDOUT: %assoc1 => constants.%assoc1.a75 // CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126 => constants.%custom_witness.f2f // CHECK:STDOUT: %AddWith.facet => constants.%AddWith.facet.0d8 @@ -3455,16 +3165,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.type.loc134_35.1 => constants.%SubWith.type.31c // CHECK:STDOUT: %facet_type.loc134_19 => constants.%facet_type.31c // CHECK:STDOUT: %.Self.frozen.loc134_37.1 => constants.%.Self.frozen.c93 -// CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.cb55bb.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.7cf -// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.4f8 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.13b -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.1 => constants.%SubWith.lookup_impl_witness.52f -// CHECK:STDOUT: %impl.elem0.loc134_43.1 => constants.%impl.elem0.5f9 -// CHECK:STDOUT: %Result.as_type.loc134_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.23f -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.2 => constants.%SubWith.lookup_impl_witness.445 -// CHECK:STDOUT: %impl.elem0.loc134_43.2 => constants.%impl.elem0.ee1 +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.445 +// CHECK:STDOUT: %impl.elem0.loc134_37 => constants.%impl.elem0.ee1 +// CHECK:STDOUT: %Result.as_type.loc134_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc134_37 => constants.%facet_type.d68 // CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.ea4 // CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.25e @@ -3484,7 +3188,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc135_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.cb55bb.2 +// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.cb5 +// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.4f8 // CHECK:STDOUT: %assoc1 => constants.%assoc1.e70 // CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137 => constants.%custom_witness.276 // CHECK:STDOUT: %SubWith.facet => constants.%SubWith.facet.d62 @@ -3504,16 +3209,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.type.loc145_35.1 => constants.%MulWith.type.661 // CHECK:STDOUT: %facet_type.loc145_19 => constants.%facet_type.661 // CHECK:STDOUT: %.Self.frozen.loc145_37.1 => constants.%.Self.frozen.5fe -// CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.0a6803.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.e09 -// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.940 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.9d9 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.1 => constants.%MulWith.lookup_impl_witness.6c6 -// CHECK:STDOUT: %impl.elem0.loc145_43.1 => constants.%impl.elem0.731 -// CHECK:STDOUT: %Result.as_type.loc145_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.6d9 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.2 => constants.%MulWith.lookup_impl_witness.74c -// CHECK:STDOUT: %impl.elem0.loc145_43.2 => constants.%impl.elem0.4c1 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.74c +// CHECK:STDOUT: %impl.elem0.loc145_37 => constants.%impl.elem0.4c1 +// CHECK:STDOUT: %Result.as_type.loc145_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc145_37 => constants.%facet_type.a2e // CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.216 // CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.ec6 @@ -3533,7 +3232,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc146_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.0a6803.2 +// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.0a6 +// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.940 // CHECK:STDOUT: %assoc1 => constants.%assoc1.b22 // CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148 => constants.%custom_witness.8e4 // CHECK:STDOUT: %MulWith.facet => constants.%MulWith.facet.4a0 @@ -3553,16 +3253,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.type.loc156_35.1 => constants.%DivWith.type.dd8 // CHECK:STDOUT: %facet_type.loc156_19 => constants.%facet_type.dd8 // CHECK:STDOUT: %.Self.frozen.loc156_37.1 => constants.%.Self.frozen.d10 -// CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.4732f8.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.483 -// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.2dc -// CHECK:STDOUT: %assoc0 => constants.%assoc0.e8b -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.1 => constants.%DivWith.lookup_impl_witness.531 -// CHECK:STDOUT: %impl.elem0.loc156_43.1 => constants.%impl.elem0.872 -// CHECK:STDOUT: %Result.as_type.loc156_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.2e9 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.2 => constants.%DivWith.lookup_impl_witness.14c -// CHECK:STDOUT: %impl.elem0.loc156_43.2 => constants.%impl.elem0.d16 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.14c +// CHECK:STDOUT: %impl.elem0.loc156_37 => constants.%impl.elem0.d16 +// CHECK:STDOUT: %Result.as_type.loc156_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc156_37 => constants.%facet_type.89f // CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.fcf // CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.5ce @@ -3582,7 +3276,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc157_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.4732f8.2 +// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.473 +// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.2dc // CHECK:STDOUT: %assoc1 => constants.%assoc1.8b9 // CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159 => constants.%custom_witness.099 // CHECK:STDOUT: %DivWith.facet => constants.%DivWith.facet.b29 @@ -3602,16 +3297,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.type.loc167_35.1 => constants.%ModWith.type.c72 // CHECK:STDOUT: %facet_type.loc167_19 => constants.%facet_type.c72 // CHECK:STDOUT: %.Self.frozen.loc167_37.1 => constants.%.Self.frozen.c84 -// CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.4d1b1b.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.40c -// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.ad2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.c8a -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.1 => constants.%ModWith.lookup_impl_witness.06d -// CHECK:STDOUT: %impl.elem0.loc167_43.1 => constants.%impl.elem0.968 -// CHECK:STDOUT: %Result.as_type.loc167_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.dc4 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.2 => constants.%ModWith.lookup_impl_witness.305 -// CHECK:STDOUT: %impl.elem0.loc167_43.2 => constants.%impl.elem0.9c8 +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.305 +// CHECK:STDOUT: %impl.elem0.loc167_37 => constants.%impl.elem0.9c8 +// CHECK:STDOUT: %Result.as_type.loc167_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc167_37 => constants.%facet_type.573 // CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.6af // CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.6c9 @@ -3631,7 +3320,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc168_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.4d1b1b.2 +// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.4d1 +// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.ad2 // CHECK:STDOUT: %assoc1 => constants.%assoc1.eed // CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170 => constants.%custom_witness.129 // CHECK:STDOUT: %ModWith.facet => constants.%ModWith.facet.b10 @@ -3651,16 +3341,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %AddWith.type.loc123_35.1 => constants.%AddWith.type.db7 // CHECK:STDOUT: %facet_type.loc123_19 => constants.%facet_type.db7 // CHECK:STDOUT: %.Self.frozen.loc123_37.1 => constants.%.Self.frozen.bc4 -// CHECK:STDOUT: %require_complete.loc123 => constants.%complete_type.758ea8.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.447 -// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.be8 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.31c -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.1 => constants.%AddWith.lookup_impl_witness.a9e -// CHECK:STDOUT: %impl.elem0.loc123_43.1 => constants.%impl.elem0.517 -// CHECK:STDOUT: %Result.as_type.loc123_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.6a9 -// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123_43.2 => constants.%AddWith.lookup_impl_witness.f6c -// CHECK:STDOUT: %impl.elem0.loc123_43.2 => constants.%impl.elem0.a74 +// CHECK:STDOUT: %AddWith.lookup_impl_witness.loc123 => constants.%AddWith.lookup_impl_witness.f6c +// CHECK:STDOUT: %impl.elem0.loc123_37 => constants.%impl.elem0.a74 +// CHECK:STDOUT: %Result.as_type.loc123_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc123_37 => constants.%facet_type.279 // CHECK:STDOUT: %pattern_type.loc123 => constants.%pattern_type.95b // CHECK:STDOUT: %T.patt.loc123_4.2 => constants.%T.patt.cc5 @@ -3680,7 +3364,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc124_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc124_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.758ea8.2 +// CHECK:STDOUT: %require_complete.loc126 => constants.%complete_type.758 +// CHECK:STDOUT: %AddWith.assoc_type => constants.%AddWith.assoc_type.be8 // CHECK:STDOUT: %assoc1 => constants.%assoc1.86c // CHECK:STDOUT: %AddWith.lookup_impl_witness.loc126 => constants.%custom_witness.16b // CHECK:STDOUT: %AddWith.facet => constants.%AddWith.facet.f65 @@ -3700,16 +3385,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %SubWith.type.loc134_35.1 => constants.%SubWith.type.120 // CHECK:STDOUT: %facet_type.loc134_19 => constants.%facet_type.120 // CHECK:STDOUT: %.Self.frozen.loc134_37.1 => constants.%.Self.frozen.faf -// CHECK:STDOUT: %require_complete.loc134 => constants.%complete_type.46ea3c.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.ea6 -// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dae -// CHECK:STDOUT: %assoc0 => constants.%assoc0.fac -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.1 => constants.%SubWith.lookup_impl_witness.c4f -// CHECK:STDOUT: %impl.elem0.loc134_43.1 => constants.%impl.elem0.b5a -// CHECK:STDOUT: %Result.as_type.loc134_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.861 -// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134_43.2 => constants.%SubWith.lookup_impl_witness.4cf -// CHECK:STDOUT: %impl.elem0.loc134_43.2 => constants.%impl.elem0.94c +// CHECK:STDOUT: %SubWith.lookup_impl_witness.loc134 => constants.%SubWith.lookup_impl_witness.4cf +// CHECK:STDOUT: %impl.elem0.loc134_37 => constants.%impl.elem0.94c +// CHECK:STDOUT: %Result.as_type.loc134_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc134_37 => constants.%facet_type.1c5 // CHECK:STDOUT: %pattern_type.loc134 => constants.%pattern_type.33d // CHECK:STDOUT: %T.patt.loc134_4.2 => constants.%T.patt.203 @@ -3729,7 +3408,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc135_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc135_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.46ea3c.2 +// CHECK:STDOUT: %require_complete.loc137 => constants.%complete_type.46e +// CHECK:STDOUT: %SubWith.assoc_type => constants.%SubWith.assoc_type.dae // CHECK:STDOUT: %assoc1 => constants.%assoc1.147 // CHECK:STDOUT: %SubWith.lookup_impl_witness.loc137 => constants.%custom_witness.21a // CHECK:STDOUT: %SubWith.facet => constants.%SubWith.facet.245 @@ -3749,16 +3429,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %MulWith.type.loc145_35.1 => constants.%MulWith.type.d67 // CHECK:STDOUT: %facet_type.loc145_19 => constants.%facet_type.d67b // CHECK:STDOUT: %.Self.frozen.loc145_37.1 => constants.%.Self.frozen.c7a -// CHECK:STDOUT: %require_complete.loc145 => constants.%complete_type.920626.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.c47 -// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.ab1 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.d0a -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.1 => constants.%MulWith.lookup_impl_witness.ab5 -// CHECK:STDOUT: %impl.elem0.loc145_43.1 => constants.%impl.elem0.6ef -// CHECK:STDOUT: %Result.as_type.loc145_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.cb9 -// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145_43.2 => constants.%MulWith.lookup_impl_witness.4ca -// CHECK:STDOUT: %impl.elem0.loc145_43.2 => constants.%impl.elem0.311 +// CHECK:STDOUT: %MulWith.lookup_impl_witness.loc145 => constants.%MulWith.lookup_impl_witness.4ca +// CHECK:STDOUT: %impl.elem0.loc145_37 => constants.%impl.elem0.311 +// CHECK:STDOUT: %Result.as_type.loc145_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc145_37 => constants.%facet_type.ec7 // CHECK:STDOUT: %pattern_type.loc145 => constants.%pattern_type.537 // CHECK:STDOUT: %T.patt.loc145_4.2 => constants.%T.patt.f45 @@ -3778,7 +3452,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc146_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc146_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.920626.2 +// CHECK:STDOUT: %require_complete.loc148 => constants.%complete_type.920 +// CHECK:STDOUT: %MulWith.assoc_type => constants.%MulWith.assoc_type.ab1 // CHECK:STDOUT: %assoc1 => constants.%assoc1.349 // CHECK:STDOUT: %MulWith.lookup_impl_witness.loc148 => constants.%custom_witness.798 // CHECK:STDOUT: %MulWith.facet => constants.%MulWith.facet.394 @@ -3798,16 +3473,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %DivWith.type.loc156_35.1 => constants.%DivWith.type.5a1 // CHECK:STDOUT: %facet_type.loc156_19 => constants.%facet_type.5a1 // CHECK:STDOUT: %.Self.frozen.loc156_37.1 => constants.%.Self.frozen.057 -// CHECK:STDOUT: %require_complete.loc156 => constants.%complete_type.348fba.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.cc3 -// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.22f -// CHECK:STDOUT: %assoc0 => constants.%assoc0.a9d -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.1 => constants.%DivWith.lookup_impl_witness.ca2 -// CHECK:STDOUT: %impl.elem0.loc156_43.1 => constants.%impl.elem0.14b -// CHECK:STDOUT: %Result.as_type.loc156_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.208 -// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156_43.2 => constants.%DivWith.lookup_impl_witness.0ac -// CHECK:STDOUT: %impl.elem0.loc156_43.2 => constants.%impl.elem0.437 +// CHECK:STDOUT: %DivWith.lookup_impl_witness.loc156 => constants.%DivWith.lookup_impl_witness.0ac +// CHECK:STDOUT: %impl.elem0.loc156_37 => constants.%impl.elem0.437 +// CHECK:STDOUT: %Result.as_type.loc156_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc156_37 => constants.%facet_type.da8 // CHECK:STDOUT: %pattern_type.loc156 => constants.%pattern_type.612 // CHECK:STDOUT: %T.patt.loc156_4.2 => constants.%T.patt.bc3 @@ -3827,7 +3496,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc157_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc157_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.348fba.2 +// CHECK:STDOUT: %require_complete.loc159 => constants.%complete_type.348 +// CHECK:STDOUT: %DivWith.assoc_type => constants.%DivWith.assoc_type.22f // CHECK:STDOUT: %assoc1 => constants.%assoc1.004 // CHECK:STDOUT: %DivWith.lookup_impl_witness.loc159 => constants.%custom_witness.37f // CHECK:STDOUT: %DivWith.facet => constants.%DivWith.facet.85e @@ -3847,16 +3517,10 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %ModWith.type.loc167_35.1 => constants.%ModWith.type.794 // CHECK:STDOUT: %facet_type.loc167_19 => constants.%facet_type.794 // CHECK:STDOUT: %.Self.frozen.loc167_37.1 => constants.%.Self.frozen.813 -// CHECK:STDOUT: %require_complete.loc167 => constants.%complete_type.cc95ce.1 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.f4a -// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.021 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.310 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.1 => constants.%ModWith.lookup_impl_witness.efb -// CHECK:STDOUT: %impl.elem0.loc167_43.1 => constants.%impl.elem0.e83 -// CHECK:STDOUT: %Result.as_type.loc167_53.1 => constants.%Int64 // CHECK:STDOUT: %.Self => constants.%.Self.618 -// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167_43.2 => constants.%ModWith.lookup_impl_witness.01c -// CHECK:STDOUT: %impl.elem0.loc167_43.2 => constants.%impl.elem0.3bb +// CHECK:STDOUT: %ModWith.lookup_impl_witness.loc167 => constants.%ModWith.lookup_impl_witness.01c +// CHECK:STDOUT: %impl.elem0.loc167_37 => constants.%impl.elem0.3bb +// CHECK:STDOUT: %Result.as_type.loc167_37 => constants.%Int64 // CHECK:STDOUT: %facet_type.loc167_37 => constants.%facet_type.005 // CHECK:STDOUT: %pattern_type.loc167 => constants.%pattern_type.b4f // CHECK:STDOUT: %T.patt.loc167_4.2 => constants.%T.patt.0b5 @@ -3876,7 +3540,8 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: %require_complete.loc168_16 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_27 => constants.%complete_type.357 // CHECK:STDOUT: %require_complete.loc168_33 => constants.%complete_type.357 -// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.cc95ce.2 +// CHECK:STDOUT: %require_complete.loc170 => constants.%complete_type.cc9 +// CHECK:STDOUT: %ModWith.assoc_type => constants.%ModWith.assoc_type.021 // CHECK:STDOUT: %assoc1 => constants.%assoc1.2eb // CHECK:STDOUT: %ModWith.lookup_impl_witness.loc170 => constants.%custom_witness.981 // CHECK:STDOUT: %ModWith.facet => constants.%ModWith.facet.f5a2 @@ -4408,7 +4073,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: specific @TestNegate(constants.%Result, constants.%T.d5e) { // CHECK:STDOUT: %Result.patt.loc292_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc292_9.1 => constants.%Result -// CHECK:STDOUT: %Result.as_type.loc293_49.1 => constants.%Result.as_type +// CHECK:STDOUT: %Result.as_type.loc293_33 => constants.%Result.as_type // CHECK:STDOUT: %facet_type => constants.%facet_type.86f // CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.114 // CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.986 @@ -4459,7 +4124,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: specific @TestNegate(constants.%Destroy.facet.011, constants.%facet_value.4c2) { // CHECK:STDOUT: %Result.patt.loc292_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc292_9.1 => constants.%Destroy.facet.011 -// CHECK:STDOUT: %Result.as_type.loc293_49.1 => constants.%Int64 +// CHECK:STDOUT: %Result.as_type.loc293_33 => constants.%Int64 // CHECK:STDOUT: %facet_type => constants.%facet_type.8cf // CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.4c7 // CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.0b0 @@ -4487,7 +4152,7 @@ fn TestUnaryOperators(a: Cpp.Int16, b: Cpp.Int32) { // CHECK:STDOUT: specific @TestNegate(constants.%Destroy.facet.c63, constants.%facet_value.9b8) { // CHECK:STDOUT: %Result.patt.loc292_9.2 => constants.%Result.patt // CHECK:STDOUT: %Result.loc292_9.1 => constants.%Destroy.facet.c63 -// CHECK:STDOUT: %Result.as_type.loc293_49.1 => constants.%Int32 +// CHECK:STDOUT: %Result.as_type.loc293_33 => constants.%Int32 // CHECK:STDOUT: %facet_type => constants.%facet_type.517 // CHECK:STDOUT: %pattern_type.loc293 => constants.%pattern_type.eaa // CHECK:STDOUT: %T.patt.loc293_4.2 => constants.%T.patt.532 diff --git a/toolchain/check/testdata/named_constraint/require.carbon b/toolchain/check/testdata/named_constraint/require.carbon index 2dc7c3be3468..362367384b9c 100644 --- a/toolchain/check/testdata/named_constraint/require.carbon +++ b/toolchain/check/testdata/named_constraint/require.carbon @@ -1392,9 +1392,9 @@ constraint N { // 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.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: %Self.ref: %Z.type = name_ref Self, @Z.%Self [symbolic = constants.%Self.d87] +// CHECK:STDOUT: %Self.as_type.loc10_31: type = facet_access_type %Self.ref [symbolic = constants.%Self.as_type] +// CHECK:STDOUT: %.loc10_31: type = converted %Self.ref, %Self.as_type.loc10_31 [symbolic = 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] diff --git a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon index 4210ce6978d8..b2d8ab2152d6 100644 --- a/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon +++ b/toolchain/check/testdata/operators/overloaded/index_with_prelude.carbon @@ -96,7 +96,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.Self.frozen.b2d: %IndexWith.type.a14 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %IndexWith.assoc_type.e71: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType.f8f) [concrete] // CHECK:STDOUT: %assoc0.fda: %IndexWith.assoc_type.e71 = assoc_entity element0, imports.%Core.import_ref.fc2 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.05c: type = facet_access_type %.Self.frozen.b2d [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.b2d [symbolic_self] // CHECK:STDOUT: %assoc0.276285.2: %IndexWith.assoc_type.783 = assoc_entity element0, imports.%Core.import_ref.6b6e53.2 [symbolic] // CHECK:STDOUT: %.1aa: = impl_self_witness %.Self.frozen.b2d, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] // CHECK:STDOUT: %impl.elem0.c37: type = impl_witness_access %.1aa, element0 [symbolic_self] @@ -172,8 +172,8 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.Self.frozen: %IndexWith.type.a14 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.b2d] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] // CHECK:STDOUT: %.Self.ref: %IndexWith.type.a14 = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.b2d] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type.05c] -// CHECK:STDOUT: %.loc8_47.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.05c] +// 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.e71 = specific_constant imports.%Core.import_ref.ef0, @IndexWith.WithSelf(constants.%SubscriptType.f8f, constants.%.Self.frozen.b2d) [concrete = constants.%assoc0.fda] // CHECK:STDOUT: %ElementType.ref.loc8_47: %IndexWith.assoc_type.e71 = name_ref ElementType, %.loc8_47.2 [concrete = constants.%assoc0.fda] // CHECK:STDOUT: %impl.elem0.loc8_47.1: type = impl_witness_access constants.%.1aa, element0 [symbolic_self = constants.%impl.elem0.c37] @@ -315,7 +315,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.Self.frozen.dd6: %IndexWith.type.06b = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %IndexWith.assoc_type.223: type = assoc_entity_type @IndexWith, @IndexWith(Core.IntLiteral) [concrete] // CHECK:STDOUT: %assoc0.a00: %IndexWith.assoc_type.223 = assoc_entity element0, imports.%Core.import_ref.fc2 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.748: type = facet_access_type %.Self.frozen.dd6 [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.dd6 [symbolic_self] // CHECK:STDOUT: %assoc0.276285.2: %IndexWith.assoc_type.783 = assoc_entity element0, imports.%Core.import_ref.6b6e53.2 [symbolic] // CHECK:STDOUT: %.601: = impl_self_witness %.Self.frozen.dd6, @IndexWith, @IndexWith(Core.IntLiteral) [symbolic_self] // CHECK:STDOUT: %impl.elem0.500: type = impl_witness_access %.601, element0 [symbolic_self] @@ -388,8 +388,8 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.Self.frozen: %IndexWith.type.06b = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.dd6] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] // CHECK:STDOUT: %.Self.ref: %IndexWith.type.06b = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.dd6] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type.748] -// CHECK:STDOUT: %.loc8_54.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.748] +// 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.223 = specific_constant imports.%Core.import_ref.ef0, @IndexWith.WithSelf(Core.IntLiteral, constants.%.Self.frozen.dd6) [concrete = constants.%assoc0.a00] // CHECK:STDOUT: %ElementType.ref: %IndexWith.assoc_type.223 = name_ref ElementType, %.loc8_54.2 [concrete = constants.%assoc0.a00] // CHECK:STDOUT: %impl.elem0.loc8_54.1: type = impl_witness_access constants.%.601, element0 [symbolic_self = constants.%impl.elem0.500] @@ -523,7 +523,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.Self.frozen.b2d: %IndexWith.type.a14 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %IndexWith.assoc_type.e71: type = assoc_entity_type @IndexWith, @IndexWith(%SubscriptType.f8f) [concrete] // CHECK:STDOUT: %assoc0.fda: %IndexWith.assoc_type.e71 = assoc_entity element0, imports.%Core.import_ref.fc2 [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.05c: type = facet_access_type %.Self.frozen.b2d [symbolic_self] +// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.b2d [symbolic_self] // CHECK:STDOUT: %assoc0.276285.2: %IndexWith.assoc_type.783 = assoc_entity element0, imports.%Core.import_ref.6b6e53.2 [symbolic] // CHECK:STDOUT: %.1aa: = impl_self_witness %.Self.frozen.b2d, @IndexWith, @IndexWith(%SubscriptType.f8f) [symbolic_self] // CHECK:STDOUT: %impl.elem0.c37: type = impl_witness_access %.1aa, element0 [symbolic_self] @@ -594,8 +594,8 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.Self.frozen: %IndexWith.type.a14 = symbolic_binding .Self [symbolic_self = constants.%.Self.frozen.b2d] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %IndexWith.type [concrete] // CHECK:STDOUT: %.Self.ref: %IndexWith.type.a14 = name_ref .Self, %.Self.frozen [symbolic_self = constants.%.Self.frozen.b2d] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic_self = constants.%.Self.frozen.as_type.05c] -// CHECK:STDOUT: %.loc8_47.1: type = converted %.Self.ref, %.Self.as_type [symbolic_self = constants.%.Self.frozen.as_type.05c] +// 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.e71 = specific_constant imports.%Core.import_ref.ef0, @IndexWith.WithSelf(constants.%SubscriptType.f8f, constants.%.Self.frozen.b2d) [concrete = constants.%assoc0.fda] // CHECK:STDOUT: %ElementType.ref.loc8_47: %IndexWith.assoc_type.e71 = name_ref ElementType, %.loc8_47.2 [concrete = constants.%assoc0.fda] // CHECK:STDOUT: %impl.elem0.loc8_47.1: type = impl_witness_access constants.%.1aa, element0 [symbolic_self = constants.%impl.elem0.c37] diff --git a/toolchain/check/testdata/where_expr/dot_self_index.carbon b/toolchain/check/testdata/where_expr/dot_self_index.carbon index a3bbe130dad9..03678be9cce4 100644 --- a/toolchain/check/testdata/where_expr/dot_self_index.carbon +++ b/toolchain/check/testdata/where_expr/dot_self_index.carbon @@ -39,7 +39,6 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %.Self.frozen.3b0: %Empty.type.f57232.2 = symbolic_binding .Self [symbolic] // CHECK:STDOUT: %Empty.assoc_type.52a113.2: type = assoc_entity_type @Empty, @Empty(%T) [symbolic] // CHECK:STDOUT: %assoc0.280be6.2: %Empty.assoc_type.52a113.2 = assoc_entity element0, @Empty.WithSelf.%A [symbolic] -// CHECK:STDOUT: %require_complete.4f0: = require_complete_type %Empty.type.f57232.2 [symbolic] // CHECK:STDOUT: %.Self.frozen.as_type.dd3: type = facet_access_type %.Self.frozen.3b0 [symbolic] // CHECK:STDOUT: %Empty.lookup_impl_witness.cfd: = lookup_impl_witness %.Self.frozen.3b0, @Empty, @Empty(%T) [symbolic] // CHECK:STDOUT: %impl.elem0.14d: type = impl_witness_access %Empty.lookup_impl_witness.cfd, element0 [symbolic] @@ -60,11 +59,6 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %Empty.type.650: type = facet_type <@Empty, @Empty(%i32)> [concrete] // CHECK:STDOUT: %.Self.frozen.322: %Empty.type.650 = symbolic_binding .Self [symbolic_self] -// CHECK:STDOUT: %Empty.assoc_type.aa2: type = assoc_entity_type @Empty, @Empty(%i32) [concrete] -// CHECK:STDOUT: %assoc0.490: %Empty.assoc_type.aa2 = assoc_entity element0, @Empty.WithSelf.%A [concrete] -// CHECK:STDOUT: %.Self.frozen.as_type.e1c: type = facet_access_type %.Self.frozen.322 [symbolic_self] -// CHECK:STDOUT: %Empty.lookup_impl_witness.14f: = lookup_impl_witness %.Self.frozen.322, @Empty, @Empty(%i32) [symbolic_self] -// CHECK:STDOUT: %impl.elem0.b94: type = impl_witness_access %Empty.lookup_impl_witness.14f, element0 [symbolic_self] // CHECK:STDOUT: %ptr.a17: type = ptr_type %i32 [concrete] // CHECK:STDOUT: %.Self.245: %Empty.type.650 = symbolic_binding .Self [symbolic_self] // CHECK:STDOUT: %Empty.lookup_impl_witness.041: = lookup_impl_witness %.Self.245, @Empty, @Empty(%i32) [symbolic_self] @@ -72,7 +66,6 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %Empty_where.type.69a: type = facet_type <@Empty, @Empty(%i32) where %impl.elem0.69f = %ptr.a17> [concrete] // CHECK:STDOUT: %pattern_type.574: type = pattern_type %Empty_where.type.69a [concrete] // CHECK:STDOUT: %U.param_patt.a03: %pattern_type.574 = value_param_pattern [concrete] -// CHECK:STDOUT: %complete_type.967: = complete_type_witness %Empty.type.650 [concrete] // CHECK:STDOUT: %U.patt.7363b8.2: %pattern_type.574 = wrapper_binding_pattern U, %U.param_patt.a03 [concrete] // CHECK:STDOUT: %complete_type.348: = complete_type_witness %Empty_where.type.69a [concrete] // CHECK:STDOUT: } @@ -96,20 +89,20 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %Empty.type.loc21_40.2: type = facet_type <@Empty, @Empty(constants.%T)> [symbolic = %Empty.type.loc21_40.1 (constants.%Empty.type.f57232.2)] // CHECK:STDOUT: %.Self.frozen.loc21_42.2: @H.%Empty.type.loc21_40.1 (%Empty.type.f57232.2) = symbolic_binding .Self [symbolic = %.Self.frozen.loc21_42.1 (constants.%.Self.frozen.3b0)] // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Empty.type.loc21_40.2 [concrete] -// CHECK:STDOUT: %.Self.ref: @H.%Empty.type.loc21_40.1 (%Empty.type.f57232.2) = name_ref .Self, %.Self.frozen.loc21_42.2 [symbolic = %.Self.frozen.loc21_42.1 (constants.%.Self.frozen.3b0)] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.dd3)] -// CHECK:STDOUT: %.loc21_48.1: type = converted %.Self.ref, %.Self.as_type [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.dd3)] -// CHECK:STDOUT: %.loc21_48.2: @H.%Empty.assoc_type (%Empty.assoc_type.52a113.2) = specific_constant @A.%assoc0, @Empty.WithSelf(constants.%T, constants.%.Self.frozen.3b0) [symbolic = %assoc0 (constants.%assoc0.280be6.2)] -// CHECK:STDOUT: %A.ref: @H.%Empty.assoc_type (%Empty.assoc_type.52a113.2) = name_ref A, %.loc21_48.2 [symbolic = %assoc0 (constants.%assoc0.280be6.2)] -// CHECK:STDOUT: %impl.elem0.loc21_48.3: type = impl_witness_access constants.%Empty.lookup_impl_witness.cfd, element0 [symbolic = %impl.elem0.loc21_48.1 (constants.%impl.elem0.14d)] -// CHECK:STDOUT: %T.ref.loc21_53: type = name_ref T, %T.loc21_15.2 [symbolic = %T.loc21_15.1 (constants.%T)] -// CHECK:STDOUT: %ptr.loc21_54.2: type = ptr_type %T.ref.loc21_53 [symbolic = %ptr.loc21_54.1 (constants.%ptr.e8f)] -// CHECK:STDOUT: %rewrite.loc21_51.1 = requirement_rewrite %impl.elem0.loc21_48.3, %ptr.loc21_54.2 [concrete] -// CHECK:STDOUT: %impl.elem0.loc21_48.4: type = impl_witness_access constants.%Empty.lookup_impl_witness.ea2, element0 [symbolic = %impl.elem0.loc21_48.2 (constants.%impl.elem0.2a8)] -// CHECK:STDOUT: %rewrite.loc21_51.2 = requirement_rewrite %impl.elem0.loc21_48.4, %ptr.loc21_54.2 [concrete] +// CHECK:STDOUT: %.Self.ref: %Empty.type.f57232.2 = name_ref .Self, %.Self.frozen.loc21_42.2 [symbolic = constants.%.Self.frozen.3b0] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.frozen.as_type.dd3] +// CHECK:STDOUT: %.loc21_48.1: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.frozen.as_type.dd3] +// CHECK:STDOUT: %.loc21_48.2: %Empty.assoc_type.52a113.2 = specific_constant @A.%assoc0, @Empty.WithSelf(constants.%T, constants.%.Self.frozen.3b0) [symbolic = constants.%assoc0.280be6.2] +// CHECK:STDOUT: %A.ref: %Empty.assoc_type.52a113.2 = name_ref A, %.loc21_48.2 [symbolic = constants.%assoc0.280be6.2] +// CHECK:STDOUT: %impl.elem0.loc21_48.1: type = impl_witness_access constants.%Empty.lookup_impl_witness.cfd, element0 [symbolic = constants.%impl.elem0.14d] +// CHECK:STDOUT: %T.ref.loc21_53: type = name_ref T, %T.loc21_15.2 [symbolic = constants.%T] +// CHECK:STDOUT: %ptr.loc21_54: type = ptr_type %T.ref.loc21_53 [symbolic = constants.%ptr.e8f] +// CHECK:STDOUT: %rewrite.loc21_51.1 = requirement_rewrite %impl.elem0.loc21_48.1, %ptr.loc21_54 [concrete] +// CHECK:STDOUT: %impl.elem0.loc21_48.2: type = impl_witness_access constants.%Empty.lookup_impl_witness.ea2, element0 [symbolic = constants.%impl.elem0.2a8] +// CHECK:STDOUT: %rewrite.loc21_51.2 = requirement_rewrite %impl.elem0.loc21_48.2, %ptr.loc21_54 [concrete] // CHECK:STDOUT: %.loc21_42.2: type = where_expr [symbolic = %Empty_where.type (constants.%Empty_where.type.4e8)] { // CHECK:STDOUT: %base_facet_type = requirement_base_facet_type %Empty.type.loc21_40.2 [concrete] -// CHECK:STDOUT: %rewrite.loc21_51.2 = requirement_rewrite %impl.elem0.loc21_48.4, %ptr.loc21_54.2 [concrete] +// CHECK:STDOUT: %rewrite.loc21_51.2 = requirement_rewrite %impl.elem0.loc21_48.2, %ptr.loc21_54 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: %U: @H.%Empty_where.type (%Empty_where.type.4e8) = wrapper_binding U, %U.param @@ -126,17 +119,11 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %T.loc21_15.1: type = symbolic_binding T, 0 [symbolic = %T.loc21_15.1 (constants.%T)] // CHECK:STDOUT: %Empty.type.loc21_40.1: type = facet_type <@Empty, @Empty(%T.loc21_15.1)> [symbolic = %Empty.type.loc21_40.1 (constants.%Empty.type.f57232.2)] // CHECK:STDOUT: %.Self.frozen.loc21_42.1: @H.%Empty.type.loc21_40.1 (%Empty.type.f57232.2) = symbolic_binding .Self [symbolic = %.Self.frozen.loc21_42.1 (constants.%.Self.frozen.3b0)] -// CHECK:STDOUT: %require_complete.loc21_48: = require_complete_type %Empty.type.loc21_40.1 [symbolic = %require_complete.loc21_48 (constants.%require_complete.4f0)] -// CHECK:STDOUT: %.Self.frozen.as_type: type = facet_access_type %.Self.frozen.loc21_42.1 [symbolic = %.Self.frozen.as_type (constants.%.Self.frozen.as_type.dd3)] -// CHECK:STDOUT: %Empty.assoc_type: type = assoc_entity_type @Empty, @Empty(%T.loc21_15.1) [symbolic = %Empty.assoc_type (constants.%Empty.assoc_type.52a113.2)] -// CHECK:STDOUT: %assoc0: @H.%Empty.assoc_type (%Empty.assoc_type.52a113.2) = assoc_entity element0, @Empty.WithSelf.%A [symbolic = %assoc0 (constants.%assoc0.280be6.2)] -// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_48.1: = lookup_impl_witness %.Self.frozen.loc21_42.1, @Empty, @Empty(%T.loc21_15.1) [symbolic = %Empty.lookup_impl_witness.loc21_48.1 (constants.%Empty.lookup_impl_witness.cfd)] -// CHECK:STDOUT: %impl.elem0.loc21_48.1: type = impl_witness_access %Empty.lookup_impl_witness.loc21_48.1, element0 [symbolic = %impl.elem0.loc21_48.1 (constants.%impl.elem0.14d)] -// CHECK:STDOUT: %ptr.loc21_54.1: type = ptr_type %T.loc21_15.1 [symbolic = %ptr.loc21_54.1 (constants.%ptr.e8f)] // CHECK:STDOUT: %.Self: @H.%Empty.type.loc21_40.1 (%Empty.type.f57232.2) = symbolic_binding .Self [symbolic = %.Self (constants.%.Self.4bb)] -// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_48.2: = lookup_impl_witness %.Self, @Empty, @Empty(%T.loc21_15.1) [symbolic = %Empty.lookup_impl_witness.loc21_48.2 (constants.%Empty.lookup_impl_witness.ea2)] -// CHECK:STDOUT: %impl.elem0.loc21_48.2: type = impl_witness_access %Empty.lookup_impl_witness.loc21_48.2, element0 [symbolic = %impl.elem0.loc21_48.2 (constants.%impl.elem0.2a8)] -// CHECK:STDOUT: %Empty_where.type: type = facet_type <@Empty, @Empty(%T.loc21_15.1) where %impl.elem0.loc21_48.2 = %ptr.loc21_54.1> [symbolic = %Empty_where.type (constants.%Empty_where.type.4e8)] +// CHECK:STDOUT: %Empty.lookup_impl_witness: = lookup_impl_witness %.Self, @Empty, @Empty(%T.loc21_15.1) [symbolic = %Empty.lookup_impl_witness (constants.%Empty.lookup_impl_witness.ea2)] +// CHECK:STDOUT: %impl.elem0.loc21_42: type = impl_witness_access %Empty.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_42 (constants.%impl.elem0.2a8)] +// CHECK:STDOUT: %ptr.loc21_42: type = ptr_type %T.loc21_15.1 [symbolic = %ptr.loc21_42 (constants.%ptr.e8f)] +// CHECK:STDOUT: %Empty_where.type: type = facet_type <@Empty, @Empty(%T.loc21_15.1) where %impl.elem0.loc21_42 = %ptr.loc21_42> [symbolic = %Empty_where.type (constants.%Empty_where.type.4e8)] // CHECK:STDOUT: %pattern_type: type = pattern_type %Empty_where.type [symbolic = %pattern_type (constants.%pattern_type.67b)] // CHECK:STDOUT: %U.param_patt.loc21_31.2: @H.%pattern_type (%pattern_type.67b) = value_param_pattern [symbolic = %U.param_patt.loc21_31.2 (constants.%U.param_patt.6e9)] // CHECK:STDOUT: %U.patt.loc21_31.2: @H.%pattern_type (%pattern_type.67b) = wrapper_binding_pattern U, %U.param_patt.loc21_31.2 [symbolic = %U.patt.loc21_31.2 (constants.%U.patt.a80)] @@ -144,7 +131,7 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %V.loc21_73.1: type = symbolic_binding V, 1 [symbolic = %V.loc21_73.1 (constants.%V)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc21_31: = require_complete_type %Empty_where.type [symbolic = %require_complete.loc21_31 (constants.%require_complete.980)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Empty_where.type [symbolic = %require_complete (constants.%require_complete.980)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%U.param: @H.%Empty_where.type (%Empty_where.type.4e8)) { // CHECK:STDOUT: !entry: @@ -157,16 +144,10 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %T.loc21_15.1 => constants.%T // CHECK:STDOUT: %Empty.type.loc21_40.1 => constants.%Empty.type.f57232.2 // CHECK:STDOUT: %.Self.frozen.loc21_42.1 => constants.%.Self.frozen.3b0 -// CHECK:STDOUT: %require_complete.loc21_48 => constants.%require_complete.4f0 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.dd3 -// CHECK:STDOUT: %Empty.assoc_type => constants.%Empty.assoc_type.52a113.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.280be6.2 -// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_48.1 => constants.%Empty.lookup_impl_witness.cfd -// CHECK:STDOUT: %impl.elem0.loc21_48.1 => constants.%impl.elem0.14d -// CHECK:STDOUT: %ptr.loc21_54.1 => constants.%ptr.e8f // CHECK:STDOUT: %.Self => constants.%.Self.4bb -// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_48.2 => constants.%Empty.lookup_impl_witness.ea2 -// CHECK:STDOUT: %impl.elem0.loc21_48.2 => constants.%impl.elem0.2a8 +// CHECK:STDOUT: %Empty.lookup_impl_witness => constants.%Empty.lookup_impl_witness.ea2 +// CHECK:STDOUT: %impl.elem0.loc21_42 => constants.%impl.elem0.2a8 +// CHECK:STDOUT: %ptr.loc21_42 => constants.%ptr.e8f // CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.4e8 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.67b // CHECK:STDOUT: %U.param_patt.loc21_31.2 => constants.%U.param_patt.6e9 @@ -180,16 +161,10 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %T.loc21_15.1 => constants.%i32 // CHECK:STDOUT: %Empty.type.loc21_40.1 => constants.%Empty.type.650 // CHECK:STDOUT: %.Self.frozen.loc21_42.1 => constants.%.Self.frozen.322 -// CHECK:STDOUT: %require_complete.loc21_48 => constants.%complete_type.967 -// CHECK:STDOUT: %.Self.frozen.as_type => constants.%.Self.frozen.as_type.e1c -// CHECK:STDOUT: %Empty.assoc_type => constants.%Empty.assoc_type.aa2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.490 -// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_48.1 => constants.%Empty.lookup_impl_witness.14f -// CHECK:STDOUT: %impl.elem0.loc21_48.1 => constants.%impl.elem0.b94 -// CHECK:STDOUT: %ptr.loc21_54.1 => constants.%ptr.a17 // CHECK:STDOUT: %.Self => constants.%.Self.245 -// CHECK:STDOUT: %Empty.lookup_impl_witness.loc21_48.2 => constants.%Empty.lookup_impl_witness.041 -// CHECK:STDOUT: %impl.elem0.loc21_48.2 => constants.%impl.elem0.69f +// CHECK:STDOUT: %Empty.lookup_impl_witness => constants.%Empty.lookup_impl_witness.041 +// CHECK:STDOUT: %impl.elem0.loc21_42 => constants.%impl.elem0.69f +// CHECK:STDOUT: %ptr.loc21_42 => constants.%ptr.a17 // CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.69a // CHECK:STDOUT: %pattern_type => constants.%pattern_type.574 // CHECK:STDOUT: %U.param_patt.loc21_31.2 => constants.%U.param_patt.a03 @@ -198,6 +173,6 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %V.loc21_73.1 => bool // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc21_31 => constants.%complete_type.348 +// CHECK:STDOUT: %require_complete => constants.%complete_type.348 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/sem_ir/expr_info.cpp b/toolchain/sem_ir/expr_info.cpp index 4da477a12dd2..7e890977c236 100644 --- a/toolchain/sem_ir/expr_info.cpp +++ b/toolchain/sem_ir/expr_info.cpp @@ -294,6 +294,13 @@ auto FindStorageArgForInitializerInSpecific(const File& sem_ir, InstId init_id, init_id = init.result_id; continue; } + case CARBON_KIND(ImplWitnessAssociatedConstant init): { + if (!allow_transitive) { + return {ir, InstId::None}; + } + init_id = init.inst_id; + continue; + } case CARBON_KIND(UpdateInit init): { if (!allow_transitive) { return {ir, InstId::None};